TCP P2P без сервера - PullRequest
       43

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

2 голосов
/ 03 августа 2010

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

Ответы [ 2 ]

5 голосов
/ 03 августа 2010

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

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

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

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

2 голосов
/ 03 августа 2010

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

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

...