Russian Qt Forum
Ноябрь 22, 2024, 21:48
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Установка, сборка, отладка, тестирование
>
Не запускается TcpServer на Linux
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Не запускается TcpServer на Linux (Прочитано 14419 раз)
Viktor
Гость
Не запускается TcpServer на Linux
«
:
Май 26, 2016, 15:43 »
Есть tcp сервер и он исправно работает на Windows, но когда я перекинул его на Astra Linox, то он перестал запускаться. Ошибок никаких не выдаёт, просто не запускается консоли и пишет, что Сервер НЕ запущен.... Пробовал и пересобирать и заново писать, но всё никак. Может кто знает в чём может быть проблема? Везде стоит Qt 5 версии.
Вот код:
#include "tcpserver.h"
tcpServer::tcpServer(QObject *parent) : QTcpServer(parent)
{
clientSocket = new QTcpSocket(this);
serverSocket = new QTcpSocket(this);
connect(serverSocket,SIGNAL(readyRead()),SLOT(readSocket())); //Коннект чтения сокета
}
tcpServer::~tcpServer()
{}
//Функция, которая слушает клиента и объявляет запущен ли сервер или нет
bool tcpServer::server_start(QHostAddress addr, qint16 port)
{
if (!listen(addr, port))
{
qDebug() << "Ошибка при запуске сервера!";
return false;
}
else
{
qDebug() << "Сервер успешно запущен!";
return true;
}
}
//Функция, которая принимает соединение
void tcpServer::incomingConnection(int socketDescriptor)
{
clientSocket->connectToHost(QHostAddress::LocalHost, 60000);
qDebug() << "Сокет" << socketDescriptor << "Успешно установил соединение!\n";
if(!serverSocket->setSocketDescriptor(socketDescriptor))
{
emit error(serverSocket->error());
return;
}
}
//Функция чтения
void tcpServer::readSocket()
{
packetIN.clear();
QDataStream in(serverSocket);
for(;
{
if(!next_block_size)
{
if(serverSocket->bytesAvailable() < sizeof(quint16))
break;
}
in >> next_block_size;
if(serverSocket->bytesAvailable() < next_block_size) break;
in >> socketHeader;
in >> packetIN;
next_block_size = 0;
}
qDebug() << "***Приём пакета с заголовком: " << socketHeader;
emit requestTOBD(socketHeader, packetIN); //Сигнал чтения
}
//Функция записи (Записывает заголовок и массив из строк)
void tcpServer::writeSocket(QByteArray socketHeader, QList<QStringList> tableData)
{
//QTextStream out(stdout);
QByteArray block;
QDataStream st(&block, QIODevice::WriteOnly);
st << quint16(0)<< socketHeader << tableData;
st.device()->seek(0);
st << quint16(block.size() - sizeof(quint16));
clientSocket->write(block);
//out << "***Отправка пакета с заголовком: " << socketHeader << endl;
qDebug()<< "***Отправка пакета с заголовком: " << socketHeader << endl;
}
[/color]
«
Последнее редактирование: Май 26, 2016, 15:44 от Viktor
»
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Не запускается TcpServer на Linux
«
Ответ #1 :
Май 26, 2016, 15:57 »
Возможно проблема с параметрами addr, port. Возможно также, что т.к. Astra - это ОС для спецведомств, то там может быть впилен брэндмауэр, который запрещает слушать порты.
Записан
Viktor
Гость
Re: Не запускается TcpServer на Linux
«
Ответ #2 :
Май 26, 2016, 16:40 »
Цитата: Alex Custov от Май 26, 2016, 15:57
Возможно проблема с параметрами addr, port. Возможно также, что т.к. Astra - это ОС для спецведомств, то там может быть впилен брэндмауэр, который запрещает слушать порты.
Спасибо за мысль....а то вообще идей никаких нет(
И если это действительно так, то что тогда можно сделать? Или вообще подключиться по tcp соединению не получится?
«
Последнее редактирование: Май 26, 2016, 16:43 от Viktor
»
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Не запускается TcpServer на Linux
«
Ответ #3 :
Май 26, 2016, 16:48 »
Какой вы используете номер порта?
Наверное < 1024?
Записан
Viktor
Гость
Re: Не запускается TcpServer на Linux
«
Ответ #4 :
Май 26, 2016, 17:10 »
Цитата: Old от Май 26, 2016, 16:48
Какой вы используете номер порта?
Наверное < 1024?
60000
Записан
Hvzh
Гость
Re: Не запускается TcpServer на Linux
«
Ответ #5 :
Май 26, 2016, 17:26 »
А errno для listen вывести никак не получится?
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Не запускается TcpServer на Linux
«
Ответ #6 :
Май 26, 2016, 17:33 »
2 Viktor
Присоединяюсь к Hermann
Цитата: Hermann от Май 26, 2016, 17:26
А errno для listen вывести никак не получится?
Покажите что возвращает
QAbstractSocket::SocketError QTcpServer::serverError() const
и
QString QTcpServer::errorString() const
Записан
Hvzh
Гость
Re: Не запускается TcpServer на Linux
«
Ответ #7 :
Май 26, 2016, 17:43 »
И вот еще что. При успехе listen возвращает 0. А у Вас это интерпретируется как ошибка.
Записан
PimenS
Крякер
Offline
Сообщений: 371
Re: Не запускается TcpServer на Linux
«
Ответ #8 :
Май 26, 2016, 17:49 »
Цитата: Hermann от Май 26, 2016, 17:43
И вот еще что. При успехе listen возвращает 0. А у Вас это интерпретируется как ошибка.
Почему 0? Вроде Returns true on success; otherwise returns false.
Записан
Hvzh
Гость
Re: Не запускается TcpServer на Linux
«
Ответ #9 :
Май 26, 2016, 17:50 »
Цитата: PimenS от Май 26, 2016, 17:49
Почему 0? Вроде Returns true on success; otherwise returns false.
RETURN VALUE
On success, zero is returned. On error, -1 is returned, and errno is
set appropriately.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Не запускается TcpServer на Linux
«
Ответ #10 :
Май 26, 2016, 17:56 »
Цитата: Hermann от Май 26, 2016, 17:50
Почему 0? Вроде Returns true on success; otherwise returns false.
У ТС вызывается метод listen класса QTcpServer.
Записан
Hvzh
Гость
Re: Не запускается TcpServer на Linux
«
Ответ #11 :
Май 26, 2016, 17:56 »
Упс... Ошибочка... Я listen'ы перепутал...
Записан
Viktor
Гость
Re: Не запускается TcpServer на Linux
«
Ответ #12 :
Май 27, 2016, 11:19 »
Цитата: Old от Май 26, 2016, 17:33
2 Viktor
Присоединяюсь к Hermann
Цитата: Hermann от Май 26, 2016, 17:26
А errno для listen вывести никак не получится?
Покажите что возвращает
QAbstractSocket::SocketError QTcpServer::serverError() const
и
QString QTcpServer::errorString() const
Ничего не пишет. Возможно я что-то не так делаю?
Я добавил сигнал
connect(serverSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onError(QAbstractSocket::SocketError)));
и функцию
void tcpServer::onError(QAbstractSocket::SocketError socketError) const
{
switch (socketError) {
qDebug()<<serverSocket->errorString();
break;
case QAbstractSocket::RemoteHostClosedError:
break;
case QAbstractSocket::HostNotFoundError:
default:
break;
}
}
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Не запускается TcpServer на Linux
«
Ответ #13 :
Май 27, 2016, 11:33 »
Цитата: Viktor от Май 27, 2016, 11:19
Ничего не пишет. Возможно я что-то не так делаю?
Сразу после вызова listen добавьте строку:
Код
C++ (Qt)
qDebug
(
)
<<
serverError
(
)
<<
errorString
(
)
;
Записан
Viktor
Гость
Re: Не запускается TcpServer на Linux
«
Ответ #14 :
Май 27, 2016, 11:46 »
Цитата: Old от Май 27, 2016, 11:33
Цитата: Viktor от Май 27, 2016, 11:19
Ничего не пишет. Возможно я что-то не так делаю?
Сразу после вызова listen добавьте строку:
Код
C++ (Qt)
qDebug
(
)
<<
serverError
(
)
<<
errorString
(
)
;
Так так, пишет:
"The bound address is already in use"
Не понятно, как он может уже использоваться?
Получается, что какой бы я порт не использовал - пишут одно и то же.
«
Последнее редактирование: Май 27, 2016, 12:02 от Viktor
»
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...