UNP學習第八章udp

2022-07-30 23:51:14 字數 1450 閱讀 2989

#include ssize_t recvfrom(

int sockfd, void *buff, size_t nbytes, int

flags,

struct sockaddr *from, socklen_t *addrlen);

ssize_t sendto(

int sockfd, const

void *buff, size_t nbytes, int

flags,

const

struct sockaddr *to, socklen_t addrlen);

返回:成功讀寫位元組數,出錯-1

socket:套接字檔案描述符

buff:快取

nbytes:快取長度

flags:簡單udp中不需要,recv、send、recvmsg和sendmsg時使用

from,to:協議位址

addrlen:協議位址長度

類似於標準的read,write。

recvfrom最後兩個引數類似於accept,返回時套介面位址結構內容告訴我們是誰傳送了資料報(udp情況下)或是誰發起了連線(tcp情況下)。

sendto最後兩個引數和connect類似,我們用資料報將發往(udp情況下)或與之建立連線(tcp情況下)的協議位址。

如果客戶資料報到達伺服器,但伺服器應答丟失了。客戶永遠阻塞於recvfrom呼叫。

唯一的解決方法時給客戶recvfrom呼叫設定乙個超時。

僅僅為了呼叫recvfrom而設定超時並不是乙個完整的辦法。例如,如果我們超時了,我們無法辨別超時原因是資料報沒有到達伺服器,還是伺服器應答沒有回到客戶。

知道客戶臨時埠號的任何程序都可往客戶傳送資料報,且這些資料報會與正常的伺服器應答混淆。

對recvfrom呼叫以返回傳送響應者的ip位址和埠號,並忽略不是來自我們的資料報所發往伺服器的任何資料報。

首先我們注意到,在客戶主機可以往伺服器主機發udp資料報之前,要求有arp請求和應答。

埠不可能icmp訊息,不會返回客戶。並永遠阻塞在recvfrom呼叫。

icmp是非同步錯誤,直到很晚才返回。

udp沒有流量控制,它是不可靠的。udp傳送方比dup接收方執行速度快時造成資料報丟失的乙個重要原因。

由伺服器接收的資料報的數目時不確定的,他依賴於需要因素,如網路負載、客戶主機的處理負載遺跡伺服器主機的處理負載。

udp套介面接收緩衝區

在bsd/od 2.1中,套介面接收緩衝區的最大大小預設為262144位元組(256*1024),但由於緩衝區分配機制的影響,真實的限制是246723位元組。

udp中外出介面的確定

已連線udp套介面還可用來確定用於特定目標的外出介面,connect被應用到udp套介面的***。

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

第八章學習小結

內容 這章我具體學習了 穩定的 1.直接插入法 最簡單且穩定。2.折半插入法 利用 折半查詢 3.氣泡排序 最簡單的交換排序,可用於順序表和鏈式儲存結構,但只能交換相鄰記錄,適於小規模資料。4.簡單選擇排序 即 直接選擇排序 與冒泡演算法上有些類似,但也不適於大規模資料 o n 2 2 5.歸併排序...

第八章學習小結

思維導圖 練習總結 排序的穩定性是指 保證排序前兩個相等的數在序列中的前後順序,和排序後相同。要從 50 個鍵值中找出最大的 3 個值,選擇排序比堆排序快。t 規模較小直接選擇排序快 設有5000個無序的元素,希望用最快的速度排出其中前50個最大的元素,最好選堆排序 堆排序不需要等整個排序結束就可挑...