1 /*
2 头文件:#include<sys/types.h> #include<sys/socket.h>
3 原型:int socket(int domain,int type,int protocol);
4 domain:
5 AF_INET :表示使用TCP或UDP来传输,用IPv4地址
6 AF_INET6:表示使用TCP或UDP来传输,用IPv6地址
7 AF_UNIX :本地协议,在Linux或Unix系统上,客户端和服务器在同一主机上使用
8 type:
9 SOCK_STREAM :表示使用TCP
10 SOCK_DGRAM :表示使用UDP
11 SOCK_SEQPACKET
12 SOCK_RAM
13 protocol:
14 传0表示使用默认协议
15 返回值:成功返回新创建的socket的文件描述符;失败返回-1,设置errno
16 作用:创建套接字
17 */
18 /*
19 头文件:#include<sys/socket.h>
20 原型:int bind(int socket, const struct sockaddr *address,socklen_t address_len);
21
22 socket: 文件描述符
23 address: 构造出IP地址加端口号
24 address_len: sizeof(address)长度
25 返回值:成功返回0;失败返回-1,设置errno
26 作用:绑定套接字(ip、端口号)
27 */
28 /*
29 头文件:#include <sys/socket.h>
30 原型:int listen(int socket, int backlog);
31 socket: 文件描述符
32 backlog: 指定连接的数量
33 返回值:成功返回0;失败返回-1,设置errno
34 作用:限制同一时间允许与本主机建立连接的数量
35 */
36 /*
37 头文件:#include <sys/socket.h>
38 原型:int accept(int socket, struct sockaddr *restrict address,socklen_t *restrict ad dress_len);
39 socket: 文件描述符
40 address: 传出参数,返回成功连接客户端地址的信息,含ip地址和端口号
41 address_len: 传入传出参数,传入sizeof(address)大小,返回真正接收到地址结构体的大小
42 返回值:成功返回新的socket文件描述符,用于和客户端通信;失败返回-1,设置errno
43 作用:第三次握手后,服务器接受客户端的连接请求
44 */
45 /*
46 头文件:#include <sys/socket.h>
47 原型:int connect(int socket, const struct sockaddr *address,socklen_t address_len);
48 socket: 文件描述符
49 address: 传入参数,指定服务器地址信息,含ip地址和端口号
50 address_len: 传入参数,传入sizeof(address)大小
51 返回值:成功返回0;失败返回-1,设置errno
52 作用:客户端向服务器申请连接
53 */
1 /*
2 struct sockaddr{
3 sa_family_t sa_family; IP协议类型:AF_INET或AF_INET6
4 char sa_data[]; 端口地址
5 };
6
7 sockaddr_in{
8 sa_family_t sin_family; IP协议类型
9 in_port_t sin_port; 端口号
10 struct in_addr sin_addr; IP地址
11 }
12
13 struct in_addr{
14 uint32_t s_addr; IP地址
15 }
18 */
注意使用sockaddr_in创建的结构体在设置完参数后,必须转化为sockaddr才能作为参数传入网路套接字的绑定、连接等操作。