最近負責一個上位機程式(使用 vb winsock控制元件),該程式是用來對設備進行長時間檢測的,幾個小時,幾天,幾個月都有可能。
在程式跑到接近2個小時的時候,發現一個奇怪的現象。 上位機程式接收到下位機 8192B的大小的資料,連續6幀,每幀間隔12ms-17ms之間。 與下位機程式員溝通后,確認下位機不可能在這么短的時間產生如此大的資料。 于是后來 查查資料 自己又想了下
情況可能是:
下位機發送的資料太快 上位機來不及處理。這些資料保存在作業系統Windows的網路緩沖區內,vb有時間處理時,會從自己的緩沖區讀取資料,該資料應該是從作業系統Windows接識訓沖區內移過來的。vb最大的接識訓沖區為8192B 所以每次都在很短的時間內(10幾ms)收到8192如此長的資料。
不知道其他人有何想法? vc的處理機制也是這樣嗎?
uj5u.com熱心網友回復:
不會吧。像是程式設計的問題,有BUG.uj5u.com熱心網友回復:
有可能的 wisock最大每次只可能接收8192B 超過這個長度的資料放在哪里? 肯定不可能放在wisock緩沖區吧 因為Getdata后 winsock緩沖區會被清空的uj5u.com熱心網友回復:
一定理解資料流的概念。8192位元組的資料,會隨機分多次傳輸。接收方只管從緩沖區里讀就可以了。但是資料怎么分段,就需要提前自己定義了。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/153294.html
標籤:網絡編程
下一篇:VSprint怎么調去列印機設定
