TCP UDP區別 不定期增加內容

2022-02-15 15:27:53 字數 1186 閱讀 5560

1:udp可以傳送位元組為0的資料報,但是tcp不可以!udp的recvfrom可以接受長度為0的資料報,這是乙個只包含ip首部和乙個8位元組udp首部的沒有資料的ip資料報!

2:tcp  read返回0時候表示對端已經關閉連線

3:recvfrom和sendto也可以用於tcp,但是沒有理由這樣做!

4:udp是無連線的,所以沒有關閉乙個udp連線的說法

5:tcp 不支援廣播,udp可以經過設定後廣播。

6:有很多方法來獲取和設定影響套接字的選項

getsockopt()和setsockopt()函式

fcntl() 函式

ioctl()函式

7:一般來說:大多數tcp伺服器是併發的,大多數udp伺服器是迭代的。

8:tcp併發伺服器在多個客戶建立連線時每乙個都有自己的套接字接收緩衝區。

9:udp伺服器,他用僅有的乙個套接字接受所有的資料報並發回所有的響應。只有乙個緩衝區

10:udp協議提供的是面向非連線的服務,通訊雙方不需要建立連線。一方只需要建立好套接字,並顯式或由系統繫結位址和埠號後就可以傳送/接收資料報。和tcp不同的是,使用udp協議的資料報套接字(sock_dgram)並不限定唯一的通訊方。既可以傳送(sendto)資料給任意的接受方,也可以從任意的傳送方接收(recvfrom)資料。

如果希望為乙個資料報套接字指定唯一的通訊方時,可以使用connect來實現這一功能。需要注意的是,在資料報套接字上使用connect並不是建立連線,不存在「握手」的過程僅僅是為這個套接字指定乙個通訊方,一旦指定了對方的位址,就可以通過send/recv來傳送/接收資料了。而且可以在這個資料報套接字上多次呼叫connect函式來指定不同的通訊方。

在udp中使用connect的方法和tcp中類似,只需在建立套接字時,把套接字的型別由sock_stream換成sock_dgram即可。

不定期更新部落格

也算是乙個真正程式設計生涯的起點,聽說大神都有自己的部落格。csdn部落格主要是作為乙個詳細的記錄場所,類似log的verbose檔,細緻入微,無孔不入,因此可能更新頻率較高,質量也相對較低。我的意思是將csdn這裡的部落格作為日後更加精煉的部落格 比如個人blog站或者github pages 的...

C STL 不定期更新

一 set set的特性是,所有元素都會根據元素的鍵值自動排序,set的元素不像map那樣可以同時擁有實值 value 和鍵值 key set元素的鍵值就是實值,實值就是鍵值。set不允許兩個元素有相同的鍵值。include初始化 int arr 5 set iset arr,arr 5 或者只定義...

linux 不定期整理

改變檔案所有人 chown username filename r檢視埠占用 netstat tunlp檢視資源占用 top使用zip壓縮資料夾 zip r file.zip file檢視儲存占用比例 df 檢視當前資料夾下的各個檔案占用磁碟空間 du ah max depth 1檢視核心版本 un...