網路程式設計 send write強制傳送所有資料

2021-08-16 09:14:32 字數 961 閱讀 7357

send

通過socket傳送資料的時候,不能保證傳送的資料在網路傳輸過程中,能一次傳輸到接收端。

send

傳送的資料,只是將應用層資料傳送給kernel的緩衝區,而kernel緩衝區接收到應用層的資料之後,會根據當前自身的狀態來確定如何傳送接收的資料。具體業務邏輯,見<

>

而此處想強調的是,將send傳送的所有資料強制發給kernel緩衝區之後,才繼續下一步的操作。

非常簡單的業務需求

**實現: 0

)設定乙個標記 

ntotallength

,記錄send成功傳送資料的長度

1)開啟乙個for迴圈(while也可以)

2)設定迴圈傳送的最大次數 3

)呼叫send傳送你想傳送的全部資料 nlength 4

)跟蹤傳送到kernel緩衝區的資料大小

5)判斷傳送返回值:如果斷開連線或出錯,則停止傳送,並記錄當前錯誤資訊 6

)如果條件5)正常,則更新標記 ntotallength 7

)判斷資料是否傳送完畢,

ntotallength

和 nlength

相等,退出迴圈,否則,繼續傳送

c/c++ code:

hresult sendtotal(socket sock, pchar pszsend, int nlength, int *pnactuallength)

hresult = s_ok;

_err:

if (pnactuallength != null)

*pnactuallength = ntotallength;

trace(info, l"total sent length: %d/%d", ntotallength, nlength);

return hresult;

}

---end---

python網路程式設計 TCP網路程式設計

tcp程式設計 客戶端 import socket 1 套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2 建立鏈結 tcp socket.connect 172.27.35.1 8080 3 傳送資訊 tcp socke...

網路程式設計 網路基礎

1.物理層 提供建立 維護和拆除物理鏈路所需的機械 電氣 功能和規程的特性 提供有關在傳輸介質上傳輸非結構的位流及物理鏈路故障檢測指示。在這一層,資料還沒有被組織,僅作為原始的位流或電氣電壓處理,單位是位元。常用協議 eia tia rs 232 eia tia rs 449 v.35 rj 45 ...

網路程式設計 網路概述

應用層 常見的協議有http協議 ftp協議 傳輸層 常見協議有tcp udp協議。網路層 常見的協議有ip協議 icmp協議 igmp協議 鏈路層 常見的協議有arp協議 rarp協議。tcp 傳輸控制協議 是一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議。http 超文字傳輸協議 是網際網...