1. 程式人生 > 實用技巧 >socket程式設計

socket程式設計

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?

例子1 例子2

伺服器端

  • 建立socket,繫結到伺服器的IP和埠
  • 開始監聽 listen
  • 等待並接受客戶端的連線請求,返回新的socket(accept
  • 由新的socket與客戶端進行讀寫write和read
  • 關閉連線

客戶端

  • 建立socket(繫結本機隨機埠,這個系統自行完成)
  • 連線伺服器(connect),與伺服器進行讀寫write和read
  • 關閉連線