Создание сетевого приложения, которое может работать через интернет-соединения - PullRequest
0 голосов
/ 30 января 2012

Я немного разбираюсь в сетевом программировании (и сетевых концепциях в целом) после прохождения курса по сетевым технологиям в университете несколько лет назад.

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

Эта программа чата на C # также содержит несколько комментариев, в которых упоминается, что программа не работает через Интернет: http://www.geekpedia.com/tutorial239_Csharp-Chat-Part-1---Building-the-Chat-Client.html

Мой вопросВот почему эти приложения не работают через Интернет, когда «коммерческие» приложения чата могут.Конечно, есть какой-то способ сделать мой компьютер доступным для внешней сети, даже если его IP-адрес недопустим за пределами сети провайдера.

Ответы [ 2 ]

0 голосов
/ 30 января 2012

Знаете ли вы о networkComms.net и, в частности, пример короткого чата, демонстрирующий функциональность здесь (это менее 15 строк кода)? Это было написано специально для людей, пишущих сервер-клиентские приложения на C #, и учитывая, что большинство проблем, с которыми вы можете столкнуться, уже решены, и это может сэкономить вам время. Эта библиотека полностью подключена и работает без проблем при работе через Интернет (при условии, что вы можете настроить необходимую переадресацию портов в случае необходимости).

Как правило, если обе ваши цели находятся за NAT (поэтому нет истинных внешних IP-адресов), и вы не можете настроить переадресацию портов, вам нужно взглянуть на «дырокол TCP / UDP», довольно продвинутый метод.

0 голосов
/ 30 января 2012

Я не вижу проблем с связанным кодом. Сервер даже не связывается с локальным адресом, что означает, что он будет прослушивать соединения по всем ip-адресам на компьютере. Однако в статье о сервере есть комментарий, в котором пользователь изменил создание объекта TcpListener для привязки к определенному адресу, что означает, что клиенты могут подключаться только к этому конкретному адресу.

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

...