UDP的分析與UDP一次效能發多大的資料

2021-07-26 04:48:09 字數 1024 閱讀 5191

udp的過程比較簡單,當只有一方進行了bind顯示繫結埠,則這一方(假設為a)要先作為接收方接受資訊,因為不知道對方(假設為b)的埠號是多少。而對方作為傳送方進行傳送資料通訊的時候,底層會為它自動隨機分配乙個埠號,然後a方則能從&addr中獲取b的埠,從而能夠緊接著進行傳送資訊。

當然我們也可以對a,b雙方都進行顯示的bind來進行繫結埠。

#include

int sendto(int sockfd, const void* msg, int len, unsigned int flags, struct sockaddr* toaddr, int* addrlen);

引數sockfd為套介面的描述符

msg為指向資料傳送緩衝區的指標

len表示將要傳送的位元組數

flags一般設定為0

toaddr為指向資料傳送的套介面位址資料結構的指標

addrlen指向套介面資料結構的長度

int recvfrom(int sockfd, void* buf, int len, unsigned int flags, struct sockaddr* fromaddr, int* addrlen);

引數buf指向資料接收緩衝區的指標

fromaddr為指向資料接收的套介面位址結構的指標

其他引數和sendto意義相同

就具體函式而言:

用udp協議傳送時,用sendto函式最大能傳送資料的長度為:65535- ip頭(20) – udp頭(8)=65507位元組。用sendto函式傳送資料時,如果傳送資料長度大於該值,則函式會返回錯誤。(丟棄這個包,不進行傳送) 

用tcp協議傳送時,由於tcp是資料流協議,因此不存在包大小的限制(暫不考慮緩衝區的大小),這是指在用send函式時,資料長度引數不受限制。而實際上,所指定的這段資料並不一定會一次性傳送出去,如果這段資料比較長,會被分段傳送,如果比較短,可能會等待和下一次資料一起傳送。

記錄一次效能優化

做了這麼久開發,終於涉及到效能優化了 原因是開啟乙個頁面花了2 6秒,被提了bug 不得不說自己有點小白,嘗試了非同步執行緒和把單次的dubbo查詢優化成批量的查詢。但是這兩種嘗試都沒有宣告成功 出了問題首先要找到問題在 既然是耗時,那就要看看到底 耗時最多 這裡要說一下,因為我是改別人的 所以對業...

記錄一次效能優化

前幾天領導扔給我乙個任務讓我對某個業務系統進行效能優化,當前現狀是每秒50併發響應時間就在30s左右,之前沒有接觸過效能優化完全沒有頭緒。領導說公司買了一套dynatrace軟體可以直接用這個軟體進行分析。在測試環境壓測發現情況如下 經統計乙個介面中共列印了80多個debug級別的log,耗時巨大。...

一次效能調優的實戰

專案情況 是乙個大型公司的內部辦公系統,該系統有兩個和一般企業應用不太一樣的特點 一是使用者量非常多,人員數達到2w左右,另乙個是採用分級管理的形式,各個分公司資料分開管理。我們的定位 我們是作為業務平台的提供商參與這個專案的,我們提供底層的開發平台,系統整合商在此基礎上進行二次開發。在專案從開發到...