Общая проблема обработки публичных / частных IP-адресов при разработке сервера сокетов - PullRequest
0 голосов
/ 20 января 2011

это общий вопрос, поэтому никакой специфический язык программирования не является envolve.

Я занимаюсь разработкой сервера чата, в котором мои пользователи входят в систему с помощью любого из моих клиентских приложений с очень простой реализацией TCP протокол.

Когда пользователь входит в систему, клиент отправляет необработанный текст на сервер, указывая некоторые параметры, такие как имя пользователя , другие и наиболее важный * WAN ip.Эти данные хранятся в базе данных сервера.После выполнения алгоритма, который ищет другого онлайнового пользователя в базе данных, сервер отправляет паре пользователей ip и имя пользователя другого пользователя, чтобы впоследствии клиенты могли напрямую соединяться друг с другом без использования сервера.

Итак, сервер действует только как точка встречи.Ну, все это прекрасно работает, если пользователи не находятся в частной сети, как беспроводной маршрутизатор.Я действительно не знаю, как решить эту проблему, поэтому любая помощь, которую вы, ребята, можете оказать, будет оценена.И извините за мой английский.

Если это поможет, клиенты программируются в AS3 с использованием XMLSocket, а сервер - с VB6 с winsock.

1 Ответ

0 голосов
/ 20 января 2011

Клиенту не нужно отправлять свой адрес WAN.Сервер может запросить его из соединения.Например, см. Функцию accept в документации Win32.Я посмотрел на функцию VB6 Winsock Accept, и, похоже, она не предоставляла ту же функциональность, но, вероятно, есть другой способ сделать это в VB6.Все языки, которые я знаю, делают.

...