2014-04-25 2 views
1

2 개의 클라이언트 (각각 하나는 내 서버에 연결됨)를 서로 연결하는 것이 가능한지 알고 싶습니다.서버로 2 소켓 클라이언트 연결하기

S는 서버 및 C 클라이언트를 의미합니다. 현재 [C] < => [C 1] 및 [S] < => [C 2] 새로운 "연결"을 추가하려고합니다 : [C 1] < => [ C 2]

내 서버를 종료하더라도 연결을 만들고 싶습니다.

나를 도와 줄 수 있습니까?

+0

당신은에 붙어있는거야? 서버가 다른 클라이언트의 IP : 포트가 무엇인지 각 클라이언트와 통신하게 한 다음,이를 사용하여 연결을 설정할 수 있습니다. –

답변

1

클라이언트 중 하나는 서버 소켓을 만들고 다른 하나는 서버 소켓에 연결해야합니다.

모델은 다음과 같습니다

[C 1 - Socket 1 (client)] -> [S - Socket (server)] 
[C 2 - Socket 1 (client)] -> [S - Socket (server)] 

[C 1 - Socket 2 (client)] -> [C 2 - Socket 2 (server)] 
+0

좋아요, 내가 기대했던 것이 었습니다. 그러나 어떻게 되었습니까? 하나의 클라이언트에 방화벽이나 무언가가 있다면, 각각의 IP 주소가 있다면 "서버"이벤트로 만들 수는 없습니다. – RaphyTheGeek

+0

상자를 열어 수동으로 열지 않고도 특정 포트를 열도록 UPnP를 사용하는 방법을 볼 수 있습니다. 특히 P2P 응용 프로그램은 이것을 사용하여 서로 연결합니다. http://superuser.com/questions/333988/why-dont-p2p-connections-need-open-ports :) – KokaKiwi

+0

@RaphyTheGeek UPnP를 사용하도록 설정하는 것은 일반적으로 좋지 않습니다 보안을 위해 그리고 코드를 사용하면 코드가 사실상 불가능해질 것입니다. 이 문제에 대한 더 나은 해결책은 [구멍 펀칭] (http://en.wikipedia.org/wiki/UDP_hole_punching)을 참조하십시오. –

관련 문제