2011-12-13 4 views
-1

Indy 컴포넌트 팩을 사용하고있다. 사실 나는 udp를 통해 P2P 네트워크를 만드는 데 성공했으며 현재는 여전히 작동하지만 udp를 사용하면 매번 핑 패키지를 보내야하며, 그렇지 않으면 라우터가 매핑 포트 목록의 가상 포트를 제거합니다! udp를 통한 비디오 또는 사운드 또는 게임 프로젝트의 경우 가장 좋은 방법이지만 내 프로젝트의 경우 tcp를 통해 필요합니다.나는 P2P 네트워크를 통해 TCP를 만들려고 시도하고있다.

나는 어떻게 했는가 : 나는 1 대의 서버 기계가 실제 ip를 소유하고있다. P2P 모드로 전환하기 전에 모든 클라이언트가 서버에 패키지를 보내야한다. 이제는 서버가 라우터의 모든 클라이언트 가상 포트 (아웃 포트)를 알게된다. , 어떤 클라이언트가 다른 클라이언트에게 데이터를 보내고 싶다면, 라우터의 다른 클라이언트 IP와 가상 포트로 데이터를 보내면됩니다. 라우터가 자동으로 매핑 할 수 있습니다.

나는 TCP에서 같은 방식으로 시도했지만, 클라이언트는 데이터를 다른 클라이언트의 IP 및 가상 포트 (라우터)로 보냈지 만 TCP 클라이언트 구성 요소는이를 수신하지 못했습니다! UDP로 그것은

를받을 수 있습니다 그런데 왜 내가 idtcpserver 구성 요소와 함께 사용하여 서버 시스템에 데이터를 보낼 수있는 방법을

또는 UDP

+0

또는 tcp 클라이언트가 다른 클라이언트에 연결할 수 없습니다. ( – relativ

답변

1

당신과 함께 sockets을 결합 라우터의 가상 포트를 생성하기위한 다른 TCP의 P2P 토폴로지는 TCP. UDP는 동일한 방식으로 바인딩되지 않습니다. 당신이 가지고있는 패키지에서 Difference between TCP and UDP


서버에 연결하는 클라이언트에 connection/socket/binding의 일종이 있어야한다 (당신은 당신이 더 많은 도움을 얻을 수 있습니다 그것의 이름을 제공하는 경우). 데이터를 보내야하는 연결입니다.

+0

고마워요, 내가 확인해 보겠습니다. – relativ

+0

이미 udp와 tcp의 차이점을 알고 있습니다. 문제는 1 개 미만의 tcpserver가 NAT에 있고 tcpserver 포트가 1234이지만 뒤에 있습니다. NAT를 구성하려면 어떻게해야합니까? tcpserver 포트로 매핑 할 가상 포트를 얻는 방법은 무엇입니까? 어떤 아이디어가 있습니까? – relativ

+0

트래픽을 컴퓨터로 전달하도록 NAT를 구성해야합니다. NAT 뒤에있는 컴퓨터 *는 컴퓨터와의 연결을 만들 수 있습니다 * NAT를 벗어나지 만 ** 그렇지 않습니다 **. – Default

관련 문제