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();

相关内容