Название: Срыв сервера при подключении к нему QTcpSocket Отправлено: kramolnic от Январь 30, 2011, 04:56 Доброго времени суток!
Есть сервер, написанный на C под Linux/GCC (без Qt). Есть клиент на Си под Linux/GCC на сокетах. Клиент нормально подключается к серверу и нормально работает. Сервер очень простой: после подключения клиента ожидает вполне определенный пакет (авторизация) и в случае, если пакет не верен, принудительно отключает клиента. Делаю реализацию клиента на C++/Qt под Win XP. Использую QTcpSocket. Код для подключения брал из Qt-шных примеров. При попытке установить соединение с сервером (connectToHost) сервер фиксирует подключение, после чего, судя по выводу в консоль, ему прилетают какие-то данные - он разрывает соединение (т.к. принятый пакет (откуда он там?) не является авторизацией) затем сервер фиксирует повторное подключение клиента (сокет решил, что произошла ошибка и решил повторить попытку?) и опять отключает клиента... и так несколько раз, после чего вылетает с ошибкой выделения памяти. Я не спорю, что на сервере возможна ошибка (хотя клиент на Си прекрасно подключается/отключается и сервер нормально разрывает соединение с ним принудительно при необходимости - ни разу проблем не было). Но почему и какие данные могут отсылаться в процессе установления соединения с сервером? Ведь я еще ничего передать не успел. Суть проблемы: после вызова QTcpSocket::ConnectToHost происходит подключение к серверу; сигнал connected не генерируется; сервер фиксирует получение данных, которые я не отправлял; правильный пакет я отправить не успеваю, поскольку сервер разрывает соединение до того, как сгенерирован сигнал connected. Не понимаю, в чем дело. Вот код подключения: Код: Client::Client(QObject *parent) : Тестовая платформа: сервер - под ОС Linux Fedora 10, работает на VMware Player 3.0.1. Клиент - под Win XP SP3, на ней же работает VMware. Qt - сборка от 2010.02.1, но имеет ли это значение? Файрвол выключен, ничего не должно мешать общаться клиенту и серверу. Название: Re: Срыв сервера при подключении к нему QTcpSocket Отправлено: merke от Январь 30, 2011, 08:46 Для начала уберите вот это с кода:
Код
Раскидайте вот это по слотам OnConnected и OnError. Название: Re: Срыв сервера при подключении к нему QTcpSocket Отправлено: Omg от Февраль 02, 2011, 14:17 Я бы смотрел в слоты прием и отправки инфы, может там чего с типами и порядком напутано... Ведь коннект происходит, но сервер (очевидно) не видя верного пакета отключает клиента.
Название: Re: Срыв сервера при подключении к нему QTcpSocket Отправлено: kramolnic от Февраль 19, 2011, 20:47 Проблему решил.. отключением Panda Firewall. Хотя в нем соединение было разрешено, он посылал какой-то пакет серверу, разрывая соединение клиента и сервера и обрушивая последний.
Осталось решить проблему, что с сервером, но это уже другая тема. Всем спасибо, тему можно закрывать. |