[英]Usage of read in socket programming
在使用C編程中讀取的阻塞功能時,有什么方法可以區分有效載荷與不同數據包嗎? 我正在從TCP客戶端以數據包的形式發送每個消息,當我在TCP服務器中讀取(使用讀取功能)它時,我將所有消息都放在緩沖區中,而兩者之間沒有任何分隔符。
TCP是面向流的,這意味着沒有可以將它們分開的包,因此您必須實現自己的協議,例如,可以在發送每個包之前發送4字節的報頭數據,並在接收器中告訴接收器下一個包的大小。接收端,您應該始終讀取4字節的標頭(標識下一個數據包的大小),並使用標頭中指定的大小進行阻塞讀取。
另一種選擇是使用固定大小的數據包,因此每次您都必須從TCP緩沖區讀取固定大小的數據包時。
不同於TCP,UDP可以根據需要面向數據包。 在UDP數據包中,接收到的數據包的大小與已發送的大小相同,並且不會發生其他任何緩沖或串聯,但是它不可靠。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.