Aslında o zaman aşımları geldiğinde UdpClient
kırık olduğunu görüntülenir: Burada
bir 5 saniye zaman aşımı örneğidir. Verileri aldım ve bir sıraya ekleyen sadece bir Alma içeren bir iş parçacığı ile bir sunucu yazmaya çalıştım. TCP ile yıllarca böyle şeyler yaptım. Beklenti, döngü bir istekte bulunan bir mesaj gelene kadar almanın blokları. Ancak, sonsuza zaman aşımını ayarlama rağmen:
_server.Client.ReceiveTimeout = 0; //block waiting for connections
_server.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 0);
soket kez yaklaşık 3 dakika sonra.
Bulduğum tek geçici çözüm, zaman aşımı istisnasını yakalamak ve döngüye devam etmekti. Bu Microsoft hatasını gizler, ancak bunun neden oluştuğuna dair temel soruyu yanıtlayamaz.
teşekkür ederiz. – Jack
Bu uzun zaman önceydi! Bu şimdi iyi görünüyor. WaitOne ayrıca zaman aşımına uğradığını belirlemek için kullanabileceğiniz bir sonuç döndürür. – weston