2012-01-11 2 views
0

C# 네트워킹이 어떻게 작동하는지 배우고 싶었 기 때문에 TCP 서버와 클라이언트를 사용하는 방법을 배웠습니다. 유일한 문제는 두 컴퓨터가 동일한 네트워크에 연결된 경우에만 작동한다는 것입니다.lan이 아닌 C#의 네트워킹

그렇지 않은 경우에도 어떻게 통신 할 수 있습니까?

+0

은 인터넷에 모두 연결? :) –

답변

3

TCP/IP 소켓은 두 종점 사이에 경로가있는 한 두 종점 사이에서 작동해야합니다. 그들 사이에 경로가 없다면 분리 된 두 개의 분리 된 네트워크가있는 경우에 대해 이야기하고있는 것입니다. 이 경우 두 네트워크를 연결하는 데 필요한 것이 있습니다.

TCP/IP 서버/클라이언트 통신을 사용하고 있고 컴퓨터가 다른 네트워크에 연결되어 있고 연결하는 경로가 있고 통신 할 수없는 경우 방화벽 설정 및 기타 네트워크 설정을 확인하여 TCP/IP 패킷 한 네트워크에서 다른 네트워크에 연결할 수 있습니다.

클라이언트가 서버에 연결을 시도 할 때 올바른 IP 주소를 사용하고 있는지 확인하십시오. IP 주소가 10.0.0.5 인 서버에서 포트 4823을 청취하는 경우 서버 IP 주소 10.0.0.5와 포트 4823을 사용하여 클라이언트에서 해당 IP 주소로 텔넷 연결을 시도하십시오. 연결하면 보통 바로 설정해야합니다 . 명령 프롬프트에서

: telnet 10.0.0.5 4823

+1

정확히 내가 쓰려고했던 것. 모든 Tom이해야 할 도넛에 돈을 걸면 서버 끝점에서 포트 포워딩을 설정하고 사설 IP 대신 공개 IP를 사용하므로 그의 프로그램이 제대로 작동합니다. –

+0

다른 것은 올바른 외부 IP 주소를 지정하는지 확인하는 것입니다. –

+0

OK, 공개 IP를 여기에서 확인했습니다 : www.mypublicip.com. 그리고 클라이언트가 다음과 같이 연결합니다. Client.Connect (IPAddress.Parse ("109.64.200.92"), 8001); (IP 결과입니다) 서버가 여전히 인식하지 못합니다. –

0

TCP의 통신은 IP 주소로 수행됩니다. 따라서 서버의 IP 주소를 지정하면 클라이언트와 서버가 같은 네트워크에 있지 않아도 클라이언트는 클라이언트와 통신 할 수 있습니다 (물론 클라이언트가 상주하는 네트워크가 올바르게 구성되어 있고 서버의 네트워크에 연결). DNS 서비스를 사용하고 IP 주소 대신 서버의 FQDN을 제공 할 수도 있습니다. 클라이언트 네트워크의 DNS 서버가 서버의 FQDN을 IP 주소로 확인합니다.