디버깅 할 수없는 궁금한 점이 있습니다. 내 응용 프로그램이 특정 포트를 통해 UDP 패킷을 보내는 장치로부터 패킷을 받았습니다. UDP 수신기를 설정하면 while 루프가 Receive 명령을 주기적으로 트리거합니다.C# UDPClient에서 패킷을받지 못하는 응용 프로그램입니다. 수신
주어진 시간 간격마다 400 개의 값을 받아야하며이 값이 제대로 전달되는지 확인하기위한 프로세스도 설정해야합니다. 다음은 관련 코드의 단편이다
public UdpClient listener;
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
//where listenPort is an int holding the port values should be received from
listener.ExclusiveAddressUse = false;
listener.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
listener.Client.Bind(groupEP);
if (listener.Client.Connected)
{
listener.Connect(groupEP);
}
//I've actually never seen the app actually enter the code contained above
try
{
while (!done)
{
if (isListenerClosed == false && currentDevice.isConnected)
{
try
{
receive_byte_array = listener.Receive(ref groupEP);
}
catch (Exception ex)
{
throw ex;
}
}
}
}
catch (SocketException ex)
{
throw ex;
}
이상한 점은 응용 프로그램이 내 PC에 잘 실행한다는 것입니다 (모두 설정 파일 /하면 Installshield를 통해 비주얼 스튜디오에서 실행할 때) 그러나 모든 데이터를받을 수 없습니다 동료의 컴퓨터에서 설치 파일을 실행하면 (Visual Studio 환경에서 올바르게 실행됩니다). 또한 Visual Studio를 앱의 프로세스에 연결하여 코드가 실행되어 listener.Receive
에 도달 할 때까지 제대로 실행되었음을 발견했습니다. 예외가 잡히지 않으며 VS에서 오류가 발생하지 않지만 데이터가 수신되지 않으므로 코드가 중지됩니다.
부수적으로, 두 기계는 동일합니다 (Mac Minis는 64 비트 Windows 7 Ultimate N을 실행 함).
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
MessageBox.Show("Unhandled Exception Caught " + e.ToString());
throw new NotImplementedException();
}
은 Windows에서 응용 프로그램 권한 문제가 될 수 다음과 같이
나는 심지어 메인 프로그램의 UnhandledExceptionHandler을 포함 시켰습니다? 문제를 찾아내는 최선의 방법에 대한 아이디어?
아마도 방화벽 문제일까요? – oleksii
방화벽은 실제로 UDP 연결은 차단하지만 인터넷 연결은 차단 한 것으로 보입니다. 그것을 간과하는 것에 어리석은 느낌. 감사합니다 @oleksii! – GroomedGorilla