每秒傳輸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網路層協議 ...