TCP P2P без сервера

можно ли написать программу TCP P2P без сервера? Когда я гуглил этот вопрос, я нашел кое-что о обходе NAT, UPnP, можно ли их как-то использовать?


person user380798    schedule 02.08.2010    source источник
comment
Взгляните на SignalR asp.net/signalr.   -  person DmitryBoyko    schedule 22.12.2016


Ответы (2)


Да, вы можете (где, как указывает GrandmasterB, у каждого узла есть как серверные, так и клиентские сокеты). Однако NAT причинят вам боль, как вы, возможно, уже знаете.

Если вы не можете использовать миддлбоксы (серверы на общедоступных IP-адресах, к которым подключаются ваши клиенты (*)) — а они вам могут не понадобиться, потому что они скорее противоречат сути P2P — и вы не возражаете описать свой сведения о соединении с SDP, вы можете попробовать Установление интерактивного подключения.

По сути, ICE пробует разные стратегии подключения. Это подключаемая архитектура, поэтому вы можете добавлять свои собственные стратегии. По умолчанию ICE описывает методы обхода UDP, но расширение чтобы разрешить TCP-подключение находится в разработке.

(*) Вы всегда можете попробовать такую ​​архитектуру, как IRC, где у вас есть любое количество серверов, пирингующих друг с другом, к которым подключаются клиенты. По крайней мере, это на полпути к P2P. (Такая же архитектура используется SIP.)

person Frank Shearar    schedule 03.08.2010

Это действительно зависит от того, что вы подразумеваете под «сервером». Вам ни в коем случае не нужен централизованный сервер. Термин «p2p» по своему определению не подразумевает наличия централизованного сервера.

Но приложения, которые получают данные от других приложений, должны иметь возможность прослушивать входящие соединения tcp/ip... обычно это считается «серверной» функциональностью, даже если вы не называете ее «сервером». Таким образом, в вашем случае ваше p2p-приложение должно иметь встроенные возможности как сервера, так и клиента (инициация соединений).

person GrandmasterB    schedule 02.08.2010
comment
Это правильно, моя точка зрения заключается в том, что пользователям не понадобится внешний IP-адрес. Является ли это возможным? - person user380798; 03.08.2010
comment
Их машинам не нужны IP-адреса с внешней адресацией. т.е. они могут находиться в локальной сети. НО их маршрутизаторы/модемы — компоненты, которые фактически подключаются к Интернету — будут иметь внешние IP-адреса. Их просто нужно настроить для переадресации портов. Это можно сделать вручную или через UPnP. - person GrandmasterB; 03.08.2010