2016-12-20 24 views
0

我有一個使用System.Net.Sockets.Socket與本地網絡上的某些設備進行通信C#應用程序,每一個消息從應用程序發送到的設備的從設備確認預計時間 - 通常在200毫秒,如果在給定的超時時間內未收到確認,則會引發異常。使用在.NET套接字通信更加重視?

每個設備有一個插座

接收是通過套接字ReceiveAsync方法。

即使我將超時時間增加到1秒,一些用戶報告發現確認超時異常,但我擔心用戶可能正在運行另一個應用程序,這是cpu密集型的,因此會干擾從設備接收包。

我應該考慮提高我的應用程序的優先級或不.NET已經分配更加重視套接字事件或爲每個線程足夠短,我不需要擔心這個系統時間片。

謝謝。

回答

1

網絡性能可以採取「打嗝」,並有不管進程優先級的表現打所有的時間。

考慮到這一點,1次是一個非常短的超時間隔。你沒有說TCP或UDP。對於TCP,我會等待更長時間 - 更長。對於UDP,添加重試邏輯。

用戶不希望看到的例外。他們希望看到該應用程序的工作。

+0

我們在沒有其他設備和自己的網絡適配器的專用本地網絡上使用TCP,拋出異常是因爲我不希望在這樣的系統上出現一秒鐘的「打嗝」。 Ping設備的時間少於1毫秒。 – user3533460