2016-10-20 4 views
0

나는 작은 창 (FORM2)을 가지고있어 팝업 창과 같은 역할을합니다. IPAddress를 인수로 사용하여 연결합니다. 아래 코드는 연결을 보여줍니다.IPEndpoint 제거 Bind

myNewUDP.newUDPClient = new UdpClient(); 
myNewUDP.newEP  = new IPEndPoint(IPAddress.Parse("255.255.255.255"), PORT); 
IPEndPoint newBindEP = new IPEndPoint(IPAddress.Any, PORT); 

//Set port to listen to 
myNewUDP.newUDPClient.Client.Bind(newBindEP);          

팝업을 처음으로 호출하면 장치에 올바르게 연결됩니다. 그러나 후속 호출 중에는 "각 소켓 주소의 한 가지 용도 만 허용됩니다"라는 예외가 발생합니다. 이 문제를 어떻게 해결할 수 있습니까? IP와 포트 바인딩을 닫는 방법이 있습니까?

답변

1

을 연결하면 다른 끝점에 연결한다는 의미입니다. 여기 바인딩입니다. 즉, 프로토콜/포트/ip를 직접 예약합니다. 소켓에서 Close()이라는 바인딩 호출을 제거하려면.

기본 소켓에서 Bind()을 직접 호출하기 때문에 UdpClient도 이상하게 사용됩니다. 그러면 보통 Socket을 사용할 수 있습니다. 또는 실제 값인 UdpClient을 사용하여 모든 것을 처리 할 수 ​​있습니다.

+0

팝업을 두 번째로 호출하면 메시지가 전송되지 않습니다. 간단히 UdpClient를 닫으면이 문제가 해결됩니까? – Abin

+0

form2 closing 이벤트 중에 myNewUDP.newUDPClient.Close()를 시도했지만 여전히 동일한 오류가 발생합니다. – Abin

+0

@Abin 그리고 기본 소켓을 직접 파고 잇기 때문에'myNewUDP.newUDPClient.Client.Close()'는 어떨까요? –