Linux通訊端(1)
通訊端的特性由三個屬性確定 : 域, 類型, 協議.
1.域
AF_UNIX UNIX域協議 ( 檔案系統通訊端)
AF_INET ARPA網際網路協議 (UNIX網路通訊端)
...省略
2.類型
1) 流通訊端: SOCK_STREAM
2) 資料通訊端 : SOCK_DGRAM
3. 協議
一般由通訊端類型和通訊端域來決定, 通常不需要選擇. 將該參數設定為0表示使用預設協議.
通訊端地址.
1) AF_UNIX
struct sockaddr_un {
sa_family_t sun_family; /* AF_UNIX */
char sun_path[]; /* pathname */
};
2) AF_INET
struct sockaddr_in {
short int sin_family; /* AF_INET */
unsigned short int sin_port; /* port number */
struct in_addr sin_addr; /* Internet address */
}; 該結構定義在標頭檔 netinet/in.h 中
IP地址結構in_addr被定義為:
struct in_addr {
unsigned long int s_addr;
};
1. 命名通訊端
#include <sys/socket.h>
int bind( int socket, const struct sockaddr *address, size_t address_len);
2. 建立通訊端隊列
#include <sys/socket.h>
int listen( int socket, int backlog);
3.接受串連
#include <sys/socket.h>
int accept( int socket, struct sockaddr *address, size_t *address_len );
4.請求串連
#include <sys/socket.h>
int connect( int socket, const struct sockaddr *address, size_t address_len);
5.關閉通訊端
close();