2010-08-02 4 views
2

서버가없는 TCP P2P 프로그램을 작성할 수 있습니까? 이 질문을 검색했을 때 NAT 통과, UPnP에 대해 뭔가를 발견했는데 어떻게 든 사용할 수 있습니까?서버가없는 P2P 서버

+0

SignalR https://www.asp.net/signalr –

답변

5

예 (GrandmasterB가 지적한대로 각 피어에는 서버와 클라이언트 소켓이 모두 있습니다). 그러나 NAT는 이미 알고있는 것처럼 통증을 유발합니다.

미들 박스 (클라이언트가 연결 (*) 한 공용 IP 주소의 서버)를 사용할 수 없다면 P2P와 반대가되기 때문에 원하지 않을 수 있습니다. SDP으로 연결 세부 정보를 설명하면 Interactive Connectivity Establishment을 시도해 볼 수 있습니다.

기본적으로 ICE는 서로 다른 전략으로 연결을 시도합니다. 그것은 플러그 형 아키텍처이므로 사용자 정의 전략을 추가 할 수 있습니다. 기본적으로 ICE는 UDP 통과에 대한 기술을 설명하지만 TCP 연결을 허용하는 extension이 작동합니다.

(*) IRC와 같은 아키텍처를 시도해 볼 수 있습니다.이 아키텍처에서는 클라이언트가 연결되는 서버를 피어링 할 수 있습니다. 최소한 P2P의 절반 정도입니다. (이것은 또한 많은 아키텍쳐 인 SIP을 사용합니다.)

2

정말 '서버'의 의미에 달려 있습니다. 어떤 방법으로도 중앙 집중식 서버가 필요하지 않습니다. 용어 'p2p'는 그 정의상 중앙 집중식 서버를 의미하지 않습니다.

다른 앱에서 데이터를 수신하는 앱은 들어오는 tcp/ip 연결을 수신 할 수 있어야합니다. '서버'라고 부르지는 않지만 일반적으로 '서버'기능으로 간주됩니다. 따라서 귀하의 경우, 귀하의 P2P 응용 프로그램은 서버와 클라이언트 (연결 시작) 기능을 모두 가지고 있어야합니다.

+0

을보십시오. 이것은 사용자가 외부 IP를 필요로하지 않는다는 요지입니다. IT가 가능합니까? – user380798

+0

그들의 컴퓨터는 외부에서 주소 지정이 가능한 IP를 필요로하지 않습니다. 즉, 로컬 네트워크에있을 수 있습니다. 그러나 라우터/모뎀 (실제로 인터넷에 연결되는 부분)은 외부에서 주소가 가능한 IP 주소를 갖습니다. 포트를 전달하도록 설정해야합니다. 수동 또는 UPnP를 통해 수행 할 수 있습니다. – GrandmasterB