2016-08-18 2 views
0

나는 서버 프로그램과 클라이언트 프로그램을 가지고있다. 프로그램을 개발하는 동안 편의를 위해 동일한 컴퓨터에서 서버와 클라이언트를 실행합니다.공용 IP를 사용하여 내 서버에 연결할 수없는 이유는 무엇입니까?

var listener = new TcpListener(IPAddress.Any, 7070); 
listener.Start(); 

클라이언트는 (간체)이 라인을 사용하여 서버에 연결 : 나는 동일한 시스템에서 프로그램을 실행하기 때문에

var client = new TcpClient(AddressFamily.InterNetwork); 
client.Connect(IPAddress.Loopback, 7070); 

내가 IPAddress.Loopback를 사용하는 서버는이 라인을 사용하여 들어오는 연결을 듣고 시작 . 그러나 앞으로 서버와 클라이언트가 반드시 같은 컴퓨터에서 실행되지 않는다는 것을 알고 공용 IP (http://icanhazip.com (IPAddress.Parse(...)))로 변경했습니다. 따라서 클라이언트는 동일한 컴퓨터의 서버에 No connection could be made because the target machine actively refused it <my public ip:7070> 예외로 연결할 수 없습니다.

방화벽을 비활성화하려고했지만 여전히 작동하지 않습니다. 서버가 연결을 거부하는 이유는 무엇입니까? 모두의 인터페이스를 IPAddress.Any으로 들으라고 구체적으로 말하지 않았습니까?

왜 그런 일이 발생하며 어떻게 수정합니까?

귀하의 공인 IP는 ISP가 제공 실제로 라우터의 주소입니다 :

+0

그래서 'client.Connect (, 7070)'을 시도했는데 그 때 예외가 발생했다는 말입니까? 라우터에서 포트 7070으로 컴퓨터로 포트 포워딩을 수행하지 않는 한 기대할 수 있습니다. – adv12

+0

@ adv12 그래서 라우터가 연결을 거부하는 라우터라고 말하고 있습니까? – foxneSs

+0

공용 IP에 연결할 수있는 능력은 라우터/인터넷 장비를 기준으로 결정됩니다. 최소한 포트 포워드 규칙이 필요하며 NAT가 작동하지 않는 경우가 종종 있습니다. –

답변

2

여기에 희망 올바른 질문에 대한 내 의견에서 구축 된 대답. 라우터는 로컬 네트워크에있는 컴퓨터에서 나가는 연결에 대해 NAT (네트워크 주소 변환)를 수행합니다. 이러한 요청은 모두 하나의 IP에서 오는 것과 같이 인터넷을 찾으며 라우터는 주소 변환 테이블을 기반으로 올바른 로컬 컴퓨터에 응답을 보냅니다. 이는 나가는 연결에는 작동하지만 들어오는 연결에는 작동하지 않습니다.

인터넷에서 라우터로 TCP 연결을 시도 할 때 로컬 컴퓨터가 해당 트래픽을 로컬 컴퓨터의 특정 컴퓨터로 전달하도록 특별히 구성하지 않으면 라우터에서 연결 시도가 불가능할 수 있습니다 회로망. 포트 포워딩을 설정하지 않은 경우 라우터는 "미안하지만 포트 7070에서 들어오는 요청을 처리하지 않습니다."라고 말합니다.

3

개발 컴퓨터가 라우터 뒤에 있습니까?

공용 IP 주소를 통해 사용자에게 전송 된 네트워크 트래픽은 특정 네트워킹 프로토콜을 통해 특정 포트의 라우터에 전달됩니다. 라우터는 네트워크에서이 트래픽을 내부적으로 보낼 위치를 알아야합니다. 트래픽이 인터넷에서 시스템으로 전송되고 라우터가 컴퓨터의 시스템으로 트래픽을 전달할 수 없거나 전달하지 않습니다.

NAT (Network Address Translation) 및 UPnP (Universal Plug and Play) 기능 덕분에 일상 생활에서이 사실을 알 수 없습니다. 네트워크 주소 변환을 사용하면 공용 헤더의 트래픽을 네트워크상의 실제 컴퓨터의 IP로 라우팅하도록 트래픽 헤더를 수정할 수 있습니다. 들어오는 트래픽이 네트워크 연결을 위해 포트를 열려고 할 때 해당 트래픽을 적절하게 전달하도록 라우터를 구성해야합니다. 범용 플러그 앤 플레이는 많은 현대 라우터에서 지원되는 프로토콜로, 소프트웨어 및 장치가 포트를 전달하지 않고도 트래픽을 원활하게 라우팅 할 수 있습니다.

이 두 가지 옵션을 잎 : 개발 목적

  1. , 당신이있어 특히, 라우터를 액세스하고보다 강력한 응용 프로그램의 개발 시스템

  2. 에 원하는 포트 전달 이를 다른 컴퓨터 나 다른 네트워크에서 실행하려면 응용 프로그램에 UPnP support을 추가하는 것을 고려하면서 UPnP가 지원되지 않거나 일부 사용자가 사용할 수없는 포트 포워딩이 필요한 경우도 있습니다.

관련 문제