나는 서버 프로그램과 클라이언트 프로그램을 가지고있다. 프로그램을 개발하는 동안 편의를 위해 동일한 컴퓨터에서 서버와 클라이언트를 실행합니다.공용 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가 제공 실제로 라우터의 주소입니다 :
그래서 'client.Connect (, 7070)'을 시도했는데 그 때 예외가 발생했다는 말입니까? 라우터에서 포트 7070으로 컴퓨터로 포트 포워딩을 수행하지 않는 한 기대할 수 있습니다. –
adv12
@ adv12 그래서 라우터가 연결을 거부하는 라우터라고 말하고 있습니까? – foxneSs
공용 IP에 연결할 수있는 능력은 라우터/인터넷 장비를 기준으로 결정됩니다. 최소한 포트 포워드 규칙이 필요하며 NAT가 작동하지 않는 경우가 종종 있습니다. –