Russian Qt Forum

Qt => Работа с сетью => Тема начата: virtual_root от Ноябрь 13, 2011, 20:57



Название: Как при помощи QTcpSocket передать данные через интернет удаленному клиенту?
Отправлено: virtual_root от Ноябрь 13, 2011, 20:57
Добрый вечер.
 У меня уже есть готовый чат по локальной сети. Где мне приходится указывать ip и порт. А как быть если я знаю ip удаленного компьютера и хочу передать ему сообщение (как в icq) ? Подскажите,пожалуйста.


Название: Re: Как при помощи QTcpSocket передать данные через интернет удаленному клиенту?
Отправлено: andrew.k от Ноябрь 13, 2011, 23:34
подключиться к удаленному компьютеру и передать.
Какие проблемы?


Название: Re: Как при помощи QTcpSocket передать данные через интернет удаленному клиенту?
Отправлено: virtual_root от Ноябрь 14, 2011, 09:32
Я вписываю свой ip в программу ну,ничего не передаётся. Как мне удалось выяснить это потому что у удаленного компьютера сеть настроена через роутер, получается что сообщение то передаётся но приходит на модем удаленного компьютера, а на сам компьютер не доходит. Как мне сделать чтобы оно приходило на сам компьютер я не пойму, может кто делал уже подобное? Как быть в таком случае?


Название: Re: Как при помощи QTcpSocket передать данные через интернет удаленному клиенту?
Отправлено: andrew.k от Ноябрь 14, 2011, 10:16
скажи-ка, а адрес "удаленного" компа, к которому ты подключаешься похож на такой 192.168.0.2?

Читай как настроить port forwarding на удаленном роутере.
К qt это не имеет отношения.


Название: Re: Как при помощи QTcpSocket передать данные через интернет удаленному клиенту?
Отправлено: virtual_root от Ноябрь 14, 2011, 10:20
нет-нет, про внешние и внутренние ip я знаю. Я подключаюсь по внешнему ip.


Название: Re: Как при помощи QTcpSocket передать данные через интернет удаленному клиенту?
Отправлено: andrew.k от Ноябрь 14, 2011, 10:36
Я вписываю свой ip в программу ну,ничего не передаётся. Как мне удалось выяснить это потому что у удаленного компьютера сеть настроена через роутер
А это что?


Название: Re: Как при помощи QTcpSocket передать данные через ин
Отправлено: virtual_root от Ноябрь 14, 2011, 11:12
Я описалась,извините. Я вписывала ip удаленного компьютера примерно такой: 188.114.63.28, но сообщение не доходило до него. И он вписывал мой внешний ip,до меня тоже не дошло сообщение.

я прочитала про PortForward, это получается что каждый кому я хочу передать сообщение через свою программу должен себе его настроить? А как мне сделать чтобы у меня был сервер, который рассылает всем сообщения? Что мне именно нужно сделать чтобы мои сообщения доходили до клиентов? Объясню,как у меня всё устроено: у меня дома настроена локальная сеть из 3-х компьютеров через wifi-роутер,на локальных компьютерах с внутренними ip всё работает. Я использую в своей программе 1115 порт,так как он ни какой программой не занимается. Но передать сообщения на внешний ip удаленному компьютеру, у которого таким же образом настроена сеть,не получается. Как решить эту проблему?
 Может я чего-то не могу понять,объясните,пожалуйста.


Название: Re: Как при помощи QTcpSocket передать данные через ин
Отправлено: andrew.k от Ноябрь 14, 2011, 13:11
Я описалась,извините.
Ну такие подробности из жизни можно было и опустить.  ;D


Может я чего-то не могу понять,объясните,пожалуйста.
Да, ты не можешь понять назначение Port Forwarding. Читай еще раз. Прочитай еще про NAT.
Указанный адрес это адрес роутера. К нему ты и пытаешься подключаться. А программа запущена на компьютере, который за роутером.
Естественно на халяву ничего не получится. Нужно настраивать проброс портов, чтобы роутер перенаправлял запросы к нему на заданный компьютер.
Либо компьютер должен иметь внешний адрес.