none
如何處理Socket資料被切割問題 RRS feed

  • 問題

  • 各位大大你好

    最近小弟在寫接收一個設備的Socket程式,設備是當Client,當Server程式詢問設備(Client)後,設備就會將資料傳送給Server

    我知道Socket在接收資料時可能會被切割,所以必須分段接收

    只是觀察資料被切割並沒一定的規則,例如總資料應該為9bytes,但他可能會分2、7,或3、6等等過來

    對於socket資料被分段必須分段接收有無比較好的做法?應該如何處理呢?

    在麻煩知道的大大幫忙一下,謝謝喔!!!

    另外,有幾個那悶的疑問

    此設備是透過一個RS232轉TCP的Converter傳送資料,傳送過來資料量才9bytes,怎麼就被切割了,是否是因為Converter設計的關係?因為很久前有預過類似的問題,後來是換了一家Converter解決被分段問題。

     

    • 已編輯 Hsing 2010年12月7日 上午 10:52
    2010年12月7日 上午 10:19

解答

  • 那應該是虛擬 COM 了,有些設備硬體有參數要調整,可能先看看原廠的手冊。

    通常 Modbus Over TCP 這類虛擬 COM ,是允許 RS232/RS485 使用,並沒有限制只能用在 Modbus ,我手上有研華出的。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 Hsing 2010年12月8日 上午 03:43
    2010年12月7日 下午 03:00

所有回覆

  • http://social.msdn.microsoft.com/Search/zh-TW/?Refinement=112&query=Socket%20%E5%88%86%E6%AE%B5
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年12月7日 上午 10:25
    版主
  • Modbus Over TCPIP 或 Modbus TCP ?
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年12月7日 下午 02:26
  • to心冷熱情熄大大:

    不是Modbus!

    設備本身只有RS232,透過RS232轉TCP的Converter走socket出去

     

    2010年12月7日 下午 02:52
  • 那應該是虛擬 COM 了,有些設備硬體有參數要調整,可能先看看原廠的手冊。

    通常 Modbus Over TCP 這類虛擬 COM ,是允許 RS232/RS485 使用,並沒有限制只能用在 Modbus ,我手上有研華出的。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 Hsing 2010年12月8日 上午 03:43
    2010年12月7日 下午 03:00
  • 明天再問原廠看看

    我是用高绅的!

    請問一下Modbus Over Tcp是?只聽過Modbus Rtu和Modbus Tcp

    2010年12月7日 下午 03:10
  • Google 一下就有很多比較文了~


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年12月7日 下午 03:59
  • 感謝心冷熱情熄 & Bill Chung的寶貴意見

    再問過原廠後,透過Converter的某個設定值"Packet mode of serial input"設成Enable

    資料就不會有被切割的情況了,謝謝喔~

    2010年12月8日 上午 02:20