Ich benutze den Code unten, es scheint irgendwann der Sockel ist nicht freigegebenudpclient.close schließt den Socket nicht immer?
Wie habe ich das gefunden? mit Process Explorer (von sysinternal), Eigenschaften auf die Anwendung dann in die Registerkarte TCP/IP gehen.
Ich kann den Hafen sehen werden, indem Sie „netstat -a“ in eine Konsole verwendet
Mein Problem ist, nach einer gewissen Zeit (wie 5 Wochen) dort wie 40-Port ist durch die Anwendung verwendet, während es sein sollte Null.
Wer weiß, warum es das tut?
public void Connect()
{
try {
// Resolve server address
IPHostEntry hostadd = Dns.GetHostEntry(TimeServer);
IPEndPoint EPhost = new IPEndPoint(hostadd.AddressList[0], 123);
//Connect the time server
UdpClient TimeSocket = new UdpClient();
TimeSocket.Connect(EPhost);
TimeSocket.Send(SNTPData, SNTPData.Length);
SNTPData = TimeSocket.Receive(ref EPhost);
TimeSocket.Close();
if (!IsResponseValid())
{
throw new Exception("Invalid response from " + TimeServer);
}
} catch(SocketException e)
{
throw new Exception(e.Message);
}
}
Stimmen Sie die Antwort ab, wenn es richtig ist! ;) – Isaac