最近在研究用C#寫SOCKET,Server之間client可以連線,但Server、client之間傳值的訊息會lose掉,我是用sleep來讓socket休息一下。
因為我會用MessageBoxx來顯示那變數為多少(例如:當client丟一個訊息A給Server,Server就會跳出MessageBox顯示A),當第一次執行時候全部的MessageBox都有出來,但是第2次之後就常常lose掉MessageBox的訊息。
想請問高手是因為sleep的關係還是因為MessageBox會影響到socket之間傳值呢,或是因為其他原因呢?要如何解決呢?(講愈清楚愈好,算是socket初學者)感謝各位~
1.先在本機上做測試,先確定是你程式的問題還是環境的問題
2.要看你程式結構長怎麼樣才會知道問題出在哪裡
你架構穩定,問題、狀況才會小:
一般是會做Ring Buffer來隔開收進來的資料,也就是收資料的線程單純的收,不要去跟Sleep、GUI糾纏在一起,這樣資料處理的速度才會快,單純才會穩定,而收進的資料處理是要透過Ring Buffer去取回來,不要一邊收一邊處理。
一般是先做本機的Echo test,測試收送的穩定性,顯示也很單純的只有計算total counter與error counter,當速度、穩定度都夠了之後才在搞其它的東西。
建議先排除網路問題再來查看程式問題
例如:
1.可以先 ping 看看兩台 PC 間的穩定度夠不夠?
2.網路是否太多複雜?
3.是否使用無線網路?