📜  Unix套接字-摘要

📅  最后修改于: 2020-11-05 04:55:38             🧑  作者: Mango


这是与套接字编程有关的所有功能的列表。

端口和服务功能

Unix提供以下功能来从/ etc / services文件中获取服务名称。

  • struct servent * getservbyname(char * name,char * proto) -此调用采用服务名称和协议名称,并返回该服务的相应端口号。

  • struct servent * getservbyport(int port,char * proto) -此调用使用端口号和协议名称,并返回相应的服务名称。

字节排序功能

  • unsigned short htons(unsigned short hostshort) -此函数将16位(2字节)数量从主机字节顺序转换为网络字节顺序。

  • 无符号长htonl(无符号长hostlong) -此函数将32位(4字节)数量从主机字节顺序转换为网络字节顺序。

  • unsigned short ntohs(unsigned short netshort) -此函数将16位(2字节)数量从网络字节顺序转换为主机字节顺序。

  • unsigned long ntohl(无符号长netlong) -此函数将32位量从网络字节顺序转换为主机字节顺序。

IP地址功能

  • int inet_aton(const char * strptr,struct in_addr * addrptr) -此函数调用将以Internet标准点表示法将指定的字符串转换为网络地址,并将该地址存储在提供的结构中。转换后的地址将按网络字节顺序(字节从左到右顺序)。如果字符串有效,则返回1,错误则返回0。

  • in_addr_t inet_addr(const char * strptr) -此函数调用将以Internet标准点表示法将指定的字符串转换为适合用作Internet地址的整数值。转换后的地址将按网络字节顺序(字节从左到右顺序)。返回错误时的32位二进制网络字节排序的IPv4地址和INADDR_NONE。

  • char * inet_ntoa(struct in_addr inaddr) -此函数调用将指定的Internet主机地址转换为Internet标准点表示法中的字符串。

套接字核心功能

  • int套接字(int家族,int类型,int协议) -此调用返回一个套接字描述符,您可以在以后的系统调用中使用它,或者在错误时返回-1。

  • int connect(int sockfd,struct sockaddr * serv_addr,int addrlen) -TCP客户端使用connect函数与TCP服务器建立连接。如果成功连接到服务器,则此调用返回0,否则返回-1。

  • int bind(int sockfd,struct sockaddr * my_addr,int addrlen) -绑定函数将本地协议地址分配给套接字。如果成功绑定到该地址,则此调用返回0,否则返回-1。

  • int listen(int sockfd,int backlog) -仅由TCP服务器调用listen函数以侦听客户端请求。该调用成功返回0,否则返回-1。

  • int accept(int sockfd,struct sockaddr * cliaddr,socklen_t * addrlen) -TCP服务器调用accept函数以接受客户端请求并建立实际连接。成功时此调用返回非负描述符,否则返回-1。

  • int send(int sockfd,const void * msg,int len,int标志)-send函数用于通过流套接字或CONNECTED数据报套接字发送数据。该调用返回发送的字节数,否则返回-1。

  • int recv(int sockfd,void * buf,int len,无符号int标志)-recv函数用于通过流套接字或CONNECTED数据报套接字接收数据。该调用返回读入缓冲区的字节数,否则返回-1。

  • int sendto(int sockfd,const void * msg,int len,无符号int标志,const struct sockaddr * to,int tolen)-sendto函数用于通过UNCONNECTED数据报套接字发送数据。该调用返回发送的字节数,否则返回-1。

  • int recvfrom(int sockfd,void * buf,int len,无符号int标志struct sockaddr * from,int * fromlen)-recvfrom函数用于从未连接的数据报套接字接收数据。该调用返回读入缓冲区的字节数,否则返回-1。

  • int close(int sockfd)-close函数用于关闭客户端和服务器之间的通信。该调用成功返回0,否则返回-1。

  • int shutdown(int sockfd,int how) -关闭函数用于正常关闭客户端和服务器之间的通信。与close函数相比,此函数提供了更多控制。成功返回0,否则返回-1。

  • int select(int nfds,fd_set * readfds,fd_set * writefds,fd_set * errorfds,struct timeval * timeout) -此函数用于读取或写入多个套接字。

套接字助手功能

  • int write(int fildes,const void * buf,int nbyte) -写入函数尝试将buf指向的缓冲区中的nbyte字节写入与打开的文件描述符fildes相关的文件。成功完成后,write()返回实际写入与fildes关联的文件的字节数。此数字永远不会大于nbyte。否则,返回-1。

  • int read(int fildes,const void * buf,int nbyte) -读取函数尝试从与打开的文件描述符fildes相关的文件中将nbyte字节读取到buf指向的缓冲区中。成功完成后,write()返回实际写入与fildes关联的文件的字节数。此数字永远不会大于nbyte。否则,返回-1。

  • int fork(void) -fork函数创建一个新进程。新的过程称为子过程,将是调用过程(父过程)的精确副本。

  • void bzero(void * s,int nbyte) -bzero函数将nbyte空字节放入字符串s中。此函数将用于将所有套接字结构设置为空值。

  • int bcmp(const void * s1,const void * s2,int nbyte) -bcmp函数将字节字符串s1与字节字符串s2进行比较。假定两个字符串的长度均为nbyte个字节。

  • void bcopy(const void * s1,void * s2,int nbyte) -bcopy函数nbyte个字节从字符串s1复制到字符串s2。重叠的字符串处理正确。

  • void * memset(void * s,int c,int nbyte)-memset函数也用于以bzero相同的方式设置结构变量。