Russian Qt Forum
Ноябрь 23, 2024, 12:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Передача файла по tcp.Подключение к сервере  (Прочитано 6911 раз)
winneru
Гость
« : Январь 22, 2010, 12:54 »

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

А кто устанавливает номер порта?
Вот с ним и нужно "договариваться".
Записан
winneru
Гость
« Ответ #2 : Январь 22, 2010, 13:00 »

Номер порта устанавливается в программе.Только вот какой метод использовать для того чтобы сделать его фиксированным а не динамическим.
Записан
BRE
Гость
« Ответ #3 : Январь 22, 2010, 13:02 »

Номер порта устанавливается в программе.Только вот какой метод использовать для того чтобы сделать его фиксированным а не динамическим.
В какой программе? По какому протоколу эта программа работает?
Возможно, она сообщает клиенту, на каком порту будет ждать подключения.
Записан
winneru
Гость
« Ответ #4 : Январь 22, 2010, 13:13 »

Программа которую я написал работает по tcp.Я выложу код только немного позже.При нажатии на кнопку "Отправить файл" происходит вызов метода connectToHost, в котором уже необходимо указать порт.Если не совсем ясно,я могу выложить код,только немного позже
Записан
BRE
Гость
« Ответ #5 : Январь 22, 2010, 13:18 »

Код пока не нужен.
Интересует, кто и как выбирает порт на другой стороне. Почему и для чего он его назначает всегда разным.
Что бы клиент мог работать с сервером, они должны общаться на одном языке (протоколе) и ты должен к моменту подключения уже знать к какому порту ты будешь подключаться.
Записан
winneru
Гость
« Ответ #6 : Январь 22, 2010, 13:29 »

На данный момент у меня записано:connectToHost(QHostAddress:LocalHost,tcpServer.localPort()).И с LocalHost программа общается нормально,т.к. порт определяется заранее,заданным способом.Но когда я делал отладку,то заметил что результат,возвращаемый localPort() все время разный,а точнее после каждой передачи увеличивается на 2.Прошу пожалуйста меня извинить если я что то непонимаю из за собственной непросвященности.
Записан
DS_tm
Гость
« Ответ #7 : Январь 22, 2010, 13:32 »

Как я понимаю проблему, автор сам создал сервер на том же Qt. Если так, то на стороне сервера надо явно указывать порт. То есть при вызове функции listen, первым параметром передаем какие интерфейсы прослушивать, а вторым номер порта. Например:

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

Тогда сервер всегда будет ожидать подключения по 10000 порту.
Записан
winneru
Гость
« Ответ #8 : Январь 22, 2010, 13:37 »

То есть достаточно этой строчки и я смогу постоянно обращаться к серверу по указанному порту?
Записан
DS_tm
Гость
« Ответ #9 : Январь 22, 2010, 14:12 »

Ну если я правильно понял проблему, то да.
Записан
winneru
Гость
« Ответ #10 : Январь 22, 2010, 14:19 »

Огромнейшее спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.082 секунд. Запросов: 20.