socket程式設計
阿新 • • 發佈:2020-07-13
Socket套接字
套接字是作業系統核心中的一個數據結構,是網路中節點進行相互通訊的門戶,可以標識一個網路程序的ID。
將TCP/IP訊息進行了隱藏在了socket介面下
套接字 = (IP地址,埠號)
套接字分類
- 流式socket (SOCK_STREAM):用於TCP協議
- 資料報socket (SOCK_DGRAM):用於UDP協議
- 原始socket (SOCK_RAW):用於測試新的網路協議
套接字資料結構
struct sockaddr_in
struct sockaddr_in{ short int sa_family; //協議族 unsigned short int sin_port; //埠號 struct in_addr sin_addr; //IP地址 unsigned char sin_zero[8]; // 填充0,無特別意義 } struct in_addr{ unsigned long int s_addr; //32位的IPv4地址,網路位元組序 } #include <netinnet/in.h> //標頭檔案 sa_family:AF_INET IPv4協議;AF_INET6 IPv6協議
如何使用socket?
伺服器端
- 建立socket,繫結到伺服器的IP和埠
- 開始監聽 listen
- 等待並接受客戶端的連線請求,返回新的socket(accept)
- 由新的socket與客戶端進行讀寫write和read
- 關閉連線
客戶端
- 建立socket(繫結本機隨機埠,這個系統自行完成)
- 連線伺服器(connect),與伺服器進行讀寫write和read
- 關閉連線