2014-12-07 2 views
0

저는 매우 짧은 시간 동안 소켓 응용 프로그램을 구현하려고합니다. 내가 사용하는 경우 :소켓 C# 및 다른 서브넷

IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); 
IPAddress ipAddress = ipHostInfo.AddressList[0]; 
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000); 

localEndPoint IPEndPoint로는 "192.168.56.1"을 포함, 그건 내 버추얼 네트워크에서 내 주소입니다. 내 로컬 네트워크 IP ("192.168.1.165")가 있어야합니다.

어떻게 관리 할 수 ​​있습니까?

내가 구글을 통해 보았다하지만 난 당신의 가상 머신이 외부 세계의 네트워크 인터페이스에 대해 아무것도 모르는

답변

1

대답 미안 ... 찾을 수 있습니다. 로컬 주소는 NetworkInterface.GetAllNetworkInterfaces() 방법 (see here)으로 만 찾을 수 있습니다. 다른 것은 구성 설정이어야합니다.

+0

가상 컴퓨터에 없습니다. VirtualBox를 설치 한 컴퓨터에 있습니다. 자체 가상 네트워크를 만들지 만 전혀 사용하지 않습니다. – jop1

+0

오, 알았어요. 글쎄, 당신이 VirtualBox를 가지고, 당신은 여러 로컬 인터페이스, 따라서 여러 로컬 주소가 있습니다. 대답에서 언급 한 방법을 사용할 수 있습니다. 그런 다음 각 인터페이스의 IP 속성을 가져와 기본 게이트웨이가있는 인터페이스와 일반적으로 찾고있는 인터페이스를 확인할 수 있습니다. 모든 단일 컴퓨터가 0 개 또는 여러 개의 발신 IP 주소를 가질 수 있습니다. – fejesjoco

1

IPAddress.Any을 사용하면 모든 로컬 인터페이스에 간단하게 바인딩 할 수 있습니다. 대부분의 시나리오에서 특정 로컬 IP를 찾을 필요는 없습니다.

하나의 주소를 제외한 모든 주소를 버리고 있습니다. 당신이 단지 하나만 얻고 있다는 것은 놀라운 일이 아닙니다.

로컬 IP 인과 같은 것이 없습니다. 그것은 세트입니다.