socket接收資料丟失問題。

2021-10-14 22:18:58 字數 607 閱讀 1556

每秒傳輸2600個800byte的udp資料報,傳輸10分鐘左右,wireshark能夠百分之百接收到資料,但是socket會出現資料的丟書。

原因 :socket預設緩衝區大小是65536,由於資料量過大,緩衝區擠滿而導致資料的丟失。

receiver_socket = socket.socket(socket.af_inet, socket.sock_dgram)

# socket

address =

('192.168.***.***'

, xx)

# ip and port

receiver_socket.bind(address)

# bind ip and port

receiver_socket.setsockopt(socket.sol_socket, socket.so_rcvbuf,

655360

)# increase buffer

這裡設定一下,將緩衝區大小擴大十倍,即可解決上述問題。

但是udp本身就有存在資料丟失的問題,這樣網路抓包工具也將抓不到傳輸上來的資料,socket 就更不可能得到資料了。

socket傳送和接收資料

1 sendbuf sendtext sendstream 幾乎所有的通訊控制項都會提供上面的3個方法。首先看看sendbuf function tcustomwinsocket.sendbuf var buf count integer integer varerrorcode integer b...

socket通訊,客戶端獲取資料丟失問題

客戶端與服務端建立連線後,從服務端獲取byte,資料量在63757以上發現只能獲取部分剩下的全部都是空,上面的 是這樣寫的 byte rcvdata new byte len rd.read rcvdata result new string rcvdata,gbk 我的理解是socket獲取到了這...

socket接收訊息

標頭檔案在主頁 編譯方式 gcc server.c o server執行方式 server 埠號程式主體 int main int argc,char ar server 埠 建立udp套接字 fd socket af inet,sock dgram,0 準備跟af inet 即ipv4網路層協議 ...