Russian Qt Forum

Qt => Работа с сетью => Тема начата: winneru от Январь 22, 2010, 12:54



Название: Передача файла по tcp.Подключение к сервере
Отправлено: winneru от Январь 22, 2010, 12:54
Здравствуйте.Подскажите,пожалуйста.При использовании метода connectToHost,необходимо указать ip-адрес хоста и номер порта.Но дело в том что номер порта каждый раз изменяется и если порт не тот то соединения не происходит.Как можно заранее узнать номер порта компьютера,к которому подключаешься.Или может быть можно заранее установить его фиксированным.Вся пргограмма работает,а вот соединиться не получается.Заранее благодарен


Название: Re: Передача файла по tcp.Подключение к сервере
Отправлено: BRE от Январь 22, 2010, 12:55
А кто устанавливает номер порта?
Вот с ним и нужно "договариваться".


Название: Re: Передача файла по tcp.Подключение к сервере
Отправлено: winneru от Январь 22, 2010, 13:00
Номер порта устанавливается в программе.Только вот какой метод использовать для того чтобы сделать его фиксированным а не динамическим.


Название: Re: Передача файла по tcp.Подключение к сервере
Отправлено: BRE от Январь 22, 2010, 13:02
Номер порта устанавливается в программе.Только вот какой метод использовать для того чтобы сделать его фиксированным а не динамическим.
В какой программе? По какому протоколу эта программа работает?
Возможно, она сообщает клиенту, на каком порту будет ждать подключения.


Название: Re: Передача файла по tcp.Подключение к сервере
Отправлено: winneru от Январь 22, 2010, 13:13
Программа которую я написал работает по tcp.Я выложу код только немного позже.При нажатии на кнопку "Отправить файл" происходит вызов метода connectToHost, в котором уже необходимо указать порт.Если не совсем ясно,я могу выложить код,только немного позже


Название: Re: Передача файла по tcp.Подключение к сервере
Отправлено: BRE от Январь 22, 2010, 13:18
Код пока не нужен.
Интересует, кто и как выбирает порт на другой стороне. Почему и для чего он его назначает всегда разным.
Что бы клиент мог работать с сервером, они должны общаться на одном языке (протоколе) и ты должен к моменту подключения уже знать к какому порту ты будешь подключаться.


Название: Re: Передача файла по tcp.Подключение к сервере
Отправлено: winneru от Январь 22, 2010, 13:29
На данный момент у меня записано:connectToHost(QHostAddress:LocalHost,tcpServer.localPort()).И с LocalHost программа общается нормально,т.к. порт определяется заранее,заданным способом.Но когда я делал отладку,то заметил что результат,возвращаемый localPort() все время разный,а точнее после каждой передачи увеличивается на 2.Прошу пожалуйста меня извинить если я что то непонимаю из за собственной непросвященности.


Название: Re: Передача файла по tcp.Подключение к сервере
Отправлено: DS_tm от Январь 22, 2010, 13:32
Как я понимаю проблему, автор сам создал сервер на том же Qt. Если так, то на стороне сервера надо явно указывать порт. То есть при вызове функции listen, первым параметром передаем какие интерфейсы прослушивать, а вторым номер порта. Например:

Код
C++ (Qt)
  QTcpServer *server = new QTcpServer;
  server->listen(QHostAddress::Any, 10000);
 

Тогда сервер всегда будет ожидать подключения по 10000 порту.


Название: Re: Передача файла по tcp.Подключение к сервере
Отправлено: winneru от Январь 22, 2010, 13:37
То есть достаточно этой строчки и я смогу постоянно обращаться к серверу по указанному порту?


Название: Re: Передача файла по tcp.Подключение к сервере
Отправлено: DS_tm от Январь 22, 2010, 14:12
Ну если я правильно понял проблему, то да.


Название: Re: Передача файла по tcp.Подключение к сервере
Отправлено: winneru от Январь 22, 2010, 14:19
Огромнейшее спасибо