방금 .Net (Core 2)의 UDPClient로 작업하기 시작했습니다. 수신시 실제로 "원격 연결이 끊어진 연결"예외가 발생할 수 있음을 알 수 있습니다. UDP는 리모컨을 고려하지 않기 때문에 이것은 나에게별로 의미가 없습니다.왜 UDP 소켓에 대한 원격 폐쇄 연결 예외가 있습니까?
응용 프로그램에서 UDP 데이터를 수신합니다. 제어 할 수 없습니다. 내가 뭘 짧은 일은 이것이다 :의 수명 동안 그러나
if(MyUDPClient.Available > 0)
{
IPEndPoint Point = null;
Byte[] Data = MyUDPClient.Receive(ref point);
//[do something with data]
}
말했다 응용 프로그램 (내가 데이터를받을 때, 위의 루프에서 수행), 수신 할 수있는 호출이 원격 폐쇄했다고 예외를 던질 수있는 연결 (그것은하지 않았다. ..).
왜이 예외가 심지어 어쩌면 해결 방법 일지 설명 할 수 있습니까? 내가 원하는 모든 것은 데이터를 수신하고 그것이 끝내주는 엔드 포인트를 식별하는 것입니다.
최소 코드 샘플을 제공해주십시오. MyUDPClient를 초기화하는 방법을 보지 않고서는 문제가 무엇인지 추측 할 수 있습니다. 기본 생성자를 사용하여 MyUDPClient를 구성한 것일 수 있습니다. 즉, 로컬 포트 / 로컬 끝점을 제공하지 않았습니다. 이 경우 MyUDPClient.Available은 사용 가능한 데이터를 찾을 위치를 알 수 없으므로 실패합니다. 하지만 당신 말이 맞습니다. 리모컨이 연결을 닫았다는 예외는 매우 오해의 소지가 있습니다. 아마도 UDPClient가 로컬 포트에 바인딩되어 있지 않다는 것을 의미합니다. – Xaver
일부 파고가 발견되면 UDP 소켓은 소켓을 닫은 끝점으로 데이터를 보내려고하면이 오류가 발생합니다. UDPSocket에서 읽을 데이터가있을 수 있지만 마지막 전송이 성공하지 못했기 때문에 예외가 발생합니다. Control-Flag를 사용하면이를 무시할 수 있습니다. 나는 대답을 추가 할 것이다. –