Как работать с UDP или TCP/IP в глобальной сети?

Я знаю динамический IP адрес, который назначается провайдером модему одной сети и знаю динамический IP адресс другого модема другой сети. Эти две сети выходят в глобальную сеть. Мне нужно отправить сообщение от одного компа первой сети к другому компу другой сети, допустим IP адрес модема первой сети - 22.33.44.55, другого модема другой сети - 55.44.33.22, пусть будет порт 1110. Локальный IP первого компа первой сети - 192.168.1.7, локальный IP другого компа второй сети 192.168.1.9. Мне нужно получить сообщение от компа 192.168.1.7 в комп 192.168.1.9 через глобальную сеть... как это сделать с помощью UDP или TCP/IP? Спасибо!

1 ответ

  1. Там где будет стоять сервер (программулина, которая принимает соединения от клиентов, обрабатывает сообщения) вашей программы (например во второй сети) выполнить проброс порта (настройка NAT если она присутствует на модеме) на компьютер пользователя. Как это делается разбиралось где-то в недрах данного форума или РутКод, а если нет копайте подобные странички и маны.
  2. Написать собственно программулину, а точнее две, клиент и сервер, взять TCP протокол за базу.

Клиент будет соединяться с сервером (по внешнему адресу сервера т.е. 55.44.33.22 и порту 1110), модем сделает свое дело, благодаря NAT и маршрутиазации. И клиент сможет отправить сообщение на сервер, а сервер его обработать, например показать вам.

Альтернативой к (1) будет только то, если модем и так соединения пробрасывает на компьютер сразу. Тогда настраивать вообще ничего не придется.

Данный ответ, собственно как и вопрос, к C# мало относится, могу посоветовать углубиться в сокеты только. А сеть штука прозрачная, поэтому как бы вы не написали программу клиент-сервер, на сеть как таковую вы повлиять вряд ли сможете.

Skype UPD

Да, пожалуй я немного недооценил таких гигантов как Skype. Поэтому советую статью. Говорится о том, как Skype хитро просачивается через TCP и UDP соединения.

licensed under cc by-sa 3.0 with attribution.