Установите P2P-соединение в C # - PullRequest
5 голосов
/ 18 августа 2011

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

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

Более того, это интернет-конфигурация общежития, в котором я живу. Каждой комнате назначается уникальный порт и статический IP-адрес, назначаемый сервером DHCP. Как я учитываю это при разработке моей программы?

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

Наконец, я читаю несколько страниц о создании соединения, но меня смущают все возможности TcpConnection, WCF, CORBA и т. Д. Какой из них на самом деле будет наиболее простым для начала, предполагая, что я хочу только отправлять сообщения на другую машину?

Обновление:

Адрес является статическим в том смысле, что он не меняется. Мой IP-адрес имеет вид 130.83.20.xxx, и я могу либо подождать, пока DHCP-сервер назначит мне этот адрес, либо я могу ввести его самостоятельно, используя статическую конфигурацию IP.

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

1 Ответ

5 голосов
/ 18 августа 2011

Я бы пошел с TcpClient и TcpListener .Посмотрите пример кода на MSDN, скопируйте и вставьте его в два консольных проекта C # и соберите их.

Я бы использовал 127.0.0.1 (localhost) для тестирования порта 5001 (обычно используемый тестовый порт).

TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 5001); 

Тогда вы сможете протестировать простой клиент / серверкоторый работает только на вашем компьютере.Как только вы это заработаете, вы можете перенести клиента на другой компьютер в вашем общежитии и убедиться, что он все еще работает.Как только это сработает, вы можете пойти в местную кофейню и взять с собой клиента.Оставьте сервер запущенным по известному IP-адресу в вашем общежитии.В этом случае сделайте так, чтобы сервер связывался с вашим фактическим внешним IP-адресом (не локальным).Вы можете сделать это, просто указав порт для конструктора TcpListener: `

TcpListener server = new TcpListener(5001);

Как только вы все это сделаете самостоятельно или с другом, отправьте его на внешний сервер.Лучше, чтобы все это работало в демоверсии, прежде чем отправлять это вашему клиенту и разрешать ему устранять неполадки с вами.:)

Причина моего ответа:

Простой TCP-клиент / сервер очень прост и позволит создать простую программу чата между двумя компьютерами.Затем вы можете увеличить его, чтобы отправить любой поток данных, который вы хотите.Вы можете добавить такой код, чтобы получить доступ к StreamWriter:

NetworkStream stream = client.GetStream( );
StreamWriter writer = new StreamWriter(stream);
...