int socket(int domain, int type, int protocol);
函数说明:创建socket
函数说明:
domain:协议版本,一般用AF_INET
Name Purpose Man page
AF_UNIX Local communication unix(7)
AF_LOCAL Synonym for AF_UNIX
AF_INET IPv4 Internet protocols ip(7)
AF_AX25 Amateur radio AX.25 protocol ax25(4)
AF_IPX IPX - Novell protocols
AF_APPLETALK AppleTalk ddp(7)
AF_X25 ITU-T X.25 / ISO-8208 protocol x25(7)
AF_INET6 IPv6 Internet protocols ipv6(7)
AF_DECnet DECet protocol sockets
AF_KEY Key management protocol, originally de‐
veloped for usage with IPsec
AF_NETLINK Kernel user interface device netlink(7)
AF_PACKET Low-level packet interface packet(7)
AF_RDS Reliable Datagram Sockets (RDS) protocol rds(7)
rds-rdma(7)
AF_PPPOX Generic PPP transport layer, for setting
up L2 tunnels (L2TP and PPPoE)
type:协议类型
SOCK_STREAM(TCP协议) Provides sequenced, reliable, two-way, connection-based
byte streams. An out-of-band data transmission mecha‐
nism may be supported.
SOCK_DGRAM(UDP协议) Supports datagrams (connectionless, unreliable messages
of a fixed maximum length).
protocol:一般填0
返回值:
RETURN VALUE
On success, a file descriptor for the new socket is returned. On er‐
ror, -1 is returned, and errno is set appropriately.
当调用socket函数以后以后,返回一个文件描述符,内核会提供与该文件描述符相对应的读与写缓冲区,同时还有两个队列,分别是请求连接队列和已连接队列
int bind(int sockfd, const struct sockaddr *addr,
socklen_t addrlen);
函数描述:将socket文件描述符和IP,PORT(端口)绑定
参数参数:
sockerfd:调用socker函数返回的文件描述符
addr:本地服务器的IP地址和PROT:
struct sockaddr_in addr;
addr.sin_family_t =AF_INET;
addr.sin_port=htons(9999);//在网络中,端口两个字节要变成网络字节序
1:addr.sin_addr.s_addr=ptonl(INADDR_ANY);//在网络中,IP四个字节要变成网络字节序
//INADR_ANY表示本机可用任意IP
2:inet_pton(AF_INET,"128.0.0.1",&addr.sin_addr.s_addr);
addrlen:addr变量占用的内存大小
返回值:成功返回0,失败返回-1,并设置error值
int listen(int sockfd, int backlog);
函数描述:将套接字由主动态变被动态
函数说明:
backlog:同时建立连接的最大个数;
返回值:成功返回0,失败返回-1,并设置error值
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
函数说明:获得一个连接,若没有连接就阻塞等待
函数参数:
addr:传出参数,保存客户端的地址信息
addrlen:传入传出参数,addraddr变量占用的内存大小
accept函数是一个阻塞函数,会从已连接队列中获取一个新的连接,并获取一个新的文件描述符,该文件描述符用于和客户端通信
int connect(int sockfd, const struct sockaddr *addr,
socklen_t addrlen);
函数说明:连接服务端
函数参数:
addr:服务端的地址信息
addrlen:addr变量占用的内存大小
返回值:成功返回0,失败返回-1,并设置error值