[問題] 非同步模式TCP連線

作者: atien666 (...)   2016-07-20 00:08:58
最近在實作一些小程式
目的是透過非同步連線來接收條碼機掃過的條碼資訊
然後將結果印出在label上
參考了這篇文章
http://renjin.blogspot.tw/2009/02/asynchronous-tcp-client-using-c.html
照著修改自己的需求後已經能夠接收到值
但是接回來的值處理上有點問題不知該如何解決
文章寫到的state.data 是stringbuilder 所以用append來加入收到的data
但是這樣就會變成data一直累加在後面,沒辦法只顯示最新的一筆
比如說第一筆aaaaaaaaaa 第二筆bbbbbbbbbb 第三筆cccccccccc
就會變成 aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa
bbbbbbbbbb bbbbbbbbbb 這樣
cccccccccc
試著用state.data.insert來加入,抓取的位置又會跑掉
也嘗試把state.data改成用string的型態來接收值
會變成沒有辦法把結果印在label上
自己覺得問題是在EndReadCallback裡,但是嘗試了好久不知道問題在哪
想請問問題大概在哪呢?
對於C#還不是很熟悉,只能照著文章範例稍微理解修改
希望有人能夠解惑~~先感謝了
作者: Litfal (Litfal)   2016-07-20 15:02:00
看你的敘述看不出是送出多送了,還是接收沒清空buff
作者: atien666 (...)   2016-07-21 00:04:00
偵錯的時候看起來像buffer沒清空而且第一次接到值的時候都會被斷成只有10byte正常加上跳脫字元應該要有24byte
作者: Litfal (Litfal)   2016-07-21 00:59:00
因為兩個的連線永遠沒中斷,你要自己檢查分隔符號UTF8.GetString後不要直接加入Data內,給一個string去接變數字串,然後在那個字串裡面找分格符號可以用 Split 方法去切
作者: atien666 (...)   2016-07-24 01:39:00
後來是用斷行符號來判斷 感謝樓上了

Links booklink

Contact Us: admin [ a t ] ucptt.com