iT邦幫忙

0

有關SOCKET傳接值問題

最近在研究用C#寫SOCKET,Server之間client可以連線,但Server、client之間傳值的訊息會lose掉,我是用sleep來讓socket休息一下。

因為我會用MessageBoxx來顯示那變數為多少(例如:當client丟一個訊息A給Server,Server就會跳出MessageBox顯示A),當第一次執行時候全部的MessageBox都有出來,但是第2次之後就常常lose掉MessageBox的訊息。

想請問高手是因為sleep的關係還是因為MessageBox會影響到socket之間傳值呢,或是因為其他原因呢?要如何解決呢?(講愈清楚愈好,算是socket初學者)感謝各位~

6
sula3065408
iT邦研究生 1 級 ‧ 2012-02-02 13:18:46
最佳解答

1.先在本機上做測試,先確定是你程式的問題還是環境的問題
2.要看你程式結構長怎麼樣才會知道問題出在哪裡

你架構穩定,問題、狀況才會小:
一般是會做Ring Buffer來隔開收進來的資料,也就是收資料的線程單純的收,不要去跟Sleep、GUI糾纏在一起,這樣資料處理的速度才會快,單純才會穩定,而收進的資料處理是要透過Ring Buffer去取回來,不要一邊收一邊處理。

一般是先做本機的Echo test,測試收送的穩定性,顯示也很單純的只有計算total counter與error counter,當速度、穩定度都夠了之後才在搞其它的東西。

4
borin1
iT邦新手 4 級 ‧ 2012-02-02 08:53:00

你是用TCP 還是DUP傳值
又或者可能是SWITCH不穩導致而成的

6
sunnycheck
iT邦新手 1 級 ‧ 2012-02-02 10:18:36

建議先排除網路問題再來查看程式問題
例如:
1.可以先 ping 看看兩台 PC 間的穩定度夠不夠?
2.網路是否太多複雜?
3.是否使用無線網路?

我要發表回答

立即登入回答