作者 主題: socket 會收到重複的字串  (閱讀 2811 次)

0 會員 與 1 訪客 正在閱讀本文。

casa

  • 懷疑的國中生
  • **
  • 文章數: 41
    • 檢視個人資料
socket 會收到重複的字串
« 於: 2014-01-04 13:32 »
學長好...
想請問一下,我目前有自己寫了一個 socket server & client 程式
大部分時候,傳輸沒問題
server每一秒也會傳 echo 的字給 client 的 (heartbeat)
但是... 好像在 server loading 高還是網路 loading 高的時候
server會突然送給 client "echoechoecho" 之類,就是重複很多 echo 的字給 client (重複的長度不一定)
不曉得我有什 麼可以改善的地方嗎? 可以請學長指點一下嗎?

另外,想請問學長,在socket programming 時,如果 server 送給 client  的東西, client 沒收到,也沒跟 server 講(網路壅塞的情形時),一般來說,server 該如何處理? 總不能 exit (1) 吧? 單純重送嗎?

謝謝學長~~

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5384
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: socket 會收到重複的字串
« 回覆 #1 於: 2014-01-04 15:33 »
tcp? udp?
不管是那一個, 似乎也不會出現你說的某些情形....

















最有可能就是.... 你程式寫錯了.

casa

  • 懷疑的國中生
  • **
  • 文章數: 41
    • 檢視個人資料
Re: socket 會收到重複的字串
« 回覆 #2 於: 2014-01-05 23:50 »
不好意思... 我想我的程式是有問題...
只是,我還真不知道該怎麼辦... 還請學長們指導一下...
首先,我是用 tcp 來傳的
現在的問題是,一般時候傳的字看起來是沒問題
只是,在某些時候,心跳封包會從本來是 echo 4個字元變成 echoecho (重複 echo n 次)
其他封包我是沒看到有這種情形... (不過,心跳封包是每一秒就送一次,頻率是比較高)
想請問的是...
1. 我是不是送出 echo 後, 該清 buffer?
2. 送出 echo 後, client 沒收到的話,這個已經送出的  echo 會怎麼辦? (等等 會自動重送嗎? 誰會負責重送呢?)
3. 送出 echo 後, client 沒收到的話, server 該怎麼辦?

感謝幫忙

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5384
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: socket 會收到重複的字串
« 回覆 #3 於: 2014-01-06 08:57 »
你覺得程式寫錯了, 沒看到原始碼的人會知道是那兒寫錯了嗎?

1. 不用.
2. 看怎麼寫.
udp => 送了就是成功的, 要程式自己去檢查是不是有掉封包.
tcp => 如果對方沒收到, 發送端不會得到成功的結果.
3. 看你用那一種方式寫, server 要怎麼辦? 看你想寫成怎麼辦就怎麼辦吧.

zelda

  • 憂鬱的高中生
  • ***
  • 文章數: 92
    • 檢視個人資料
Re: socket 會收到重複的字串
« 回覆 #4 於: 2014-01-09 00:09 »
剛好有在寫tcp socket
先建立一個基本觀念
socket不是傳一個packet,然後收一個packet
client在收的時候有可能一次會超過一個
抓封包是最直接的方式
驗證到底是否server送出非預期的資料