【網路程式設計】學習筆記--02 套接字型別與協議設定
阿新 • • 發佈:2021-11-09
首先要清楚什麼是協議(protocol)?
簡言之,協議就是為了完成資料交換而定好的約束。
回顧我們在《學習筆記 --01》中建立套接字socket中的程式碼:
#include<sys/socket.h> int socket(int domain,int type,int protocol) | |- domain 套接字中使用的協議族(Protocol Family)資訊 |- type 套接字資料傳輸型別資訊 |- protocol 計算機間通訊中使用的協議資訊
接下來我們將會根據該函式的引數進行具體展開討論:
1.協議族(domain/Protocal Family):
這裡我們通常會用PF_INET 意思為 IPv4網際網路協議族
2.套接字型別(Type):
套接字型別指的是套接字的資料傳輸方式。
SOCK_STREAM:TCP(面向連線的套接字)。特點:傳輸過程中資料不會消失,按序傳輸資料,傳輸資料不存在邊界
SOCK_DGRAM: UDP(面向訊息的套接字)。特點:速度快,但無法避免損失,存在資料邊界,資料邊界意味著接收資料的次數應和傳輸次數相同
3.協議的最終選擇(protocol):
其實傳遞前2個引數即可建立所需的套接字。所以大部分情況下可以向第三個引數傳遞0,除非遇到以下情況:
"同一協議族中存在多個數據傳輸方式相同的協議”
暨資料傳輸方式相同,但協議不同,此時需要通過第三個引數具體指定協議資訊。
若是TCP的話,則為IPPROTO_TCP
若是UDP的話,則為IPPROTO_UDP
最終成果展示如下:
面向連線的套接字: int tcp_socket = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP) 面向訊息的套接字: int udp_socket = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP)Codeforces ID:Anonytt QQ: 847399102 可以新增&關注