创建套接字
1. 创建socket
int socket(int af, int type, int protocol);
功能介绍:
创建一个套接字。
参数说明:
- af为地址簇(Address Family),即IP地址类型
- AF_INET:表示IPv4地址
- AF_INTT6:表示IPv6地址
- type为数据传输方式。
- SOCK_STREAM:面向连接的数据传输方式
- SOCK_DGRAM:表示无连接的数据传输方式
- protocol为传输协议
- IPPROTO_TCP:表示TCP。
- IPPROTO_UDP:表示UDP。
返回值说明:
Linux中一切皆文件,socket()函数完成正确操作之后将返回一个大于0的通信文件描述符,当返回值小于0时,操作错误。
2.bind()函数和connect()函数
功能介绍:
- 服务器端要用bind()函数将套接字和特定的IP地址和端口号绑定在一起。
- 客户端要用connect()函数与服务器的套接字(IP和端口号)建立连接。
int bind(int sock, struct sockaddr *addr, sorcklen_t addrlen);
int connect(int sock, struct sockaddr *serv_addr, socklen_t addrlen);
参数说明:
- sock:由socket()调用返回的文件描述符
- addr:是一个指向sockaddr的指针,由于struct sockaddr数据结构类型不方便设置,所以通常会通过对truct sockaddr_in进行数值结构设置,然后进行强制类型转换成struct sockaddr类型的数据,结构体具体内容见本节下文。
- addrlen:是sockaddr结构的长度。
返回值说明:
返回0时,为正确绑定;返回-1时,为绑定失败。