在C語言中,recvfrom可以用來讀取套接字中的UDP資訊,如:
int length = recvfrom(socket, buffer, max_length, 0, NULL, 0) 。
max_length只告訴緩沖區可以容納的最大位元組數,當然不是實際的長度。
假設我的資訊是以下內容,并且用sendto發送:
char *message = "hi"/span>;
sendto(sock, message, strlen(message), 0, NULL, 0) 。
現在recvfrom將在收到i字符后立即停止讀取。length將被設定為2。
它是如何知道何時停止的呢?
sendto是否會在資料包中附加任何資料,并在strlen的結果中說明資料長度是多少?
uj5u.com熱心網友回復:
與基于流的TCP套接字不同,UDP套接字是基于資料報的。
這意味著對sendto的一次呼叫將發送一個UDP資料報,對recvfrom的一次呼叫將接收一個UDP資料報。 這也意味著提供給recvfrom的緩沖區應該足夠大以容納一個資料報。 如果它不夠大,該資料報中不適合緩沖區的任何位元組將被丟棄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/311829.html
標籤:
上一篇:簡單的雙向插座通信
