记录关于网络套接字API

  
1。字节序

网络协议使用的大端字节序”(起始地址存的高序字节)来传送这些多字节整数。

# include  & lt; netinet/in.h>   uint16_t  htons (uint16_t  host16bitvalue);   uint32_t  htonl (uint32_t  host32bitvalue);   uint16_t  ntohs (uint16_t  net16bitvalue);   uint32_t  ntohl (uint32_t  net32bitvalue);
2。点分十进制的ASCII码字符串和32位的网络字节序二进制值间转换IPv4地址

# include  & lt; arpa/inet.h>//字符串符串有效则返回1,否则为0//,不足:出错时addrptr返回,INADDR_NONE(32位1),又有手册称返回1   int  inet_aton (const  char  * strptr, struct  in_addr  * addrptr);   char *, inet_ntoa (struct  in_addr  inaddr);//,不足:不可重入      # include  & lt; arpa/inet.h>//,优点:ipv4和ipv6都适合,//,p: presentation  n:数字//,注意:成功返回1,输入格式无效返回0,出错返回1;EAFNOSUPPORT   int  inet_pton (int 家庭,const  char  * strptr, void  * addrptr);//,成功返回指向结果的指针,出错返回零;ENOSPC   const  char *, inet_ntop (int 家庭,,const  void  * addrptr, char  * strptr, size_t  len);
3。套接字连接绑定听接受
# include  & lt; sys/socket.h>   int 插座(int 家庭,int 类型,int 协议)# include  & lt; sys/socket.h>;   int 连接(int  sockfd, const  struct  sockaddr *, servaddr,, socklen_t 就奇怪);//绑定可以指定IP地址或端口,或两者都指定,或两者都不指定。//绑定系统保留端口,需要根权限   int 绑定(int  sockfd, const  struct  sockaddr *, myaddr,, socklen_t 就奇怪);//返回套接字关联的本地协议地址   int  getsockname (int  sockfd, struct  sockaddr *, localaddr,, socklen_t  *就奇怪);//返回套接字关联的远程协议地址,如接受返回的客户sockfd的对应地址   int  getpeername (itn  sockfd, struct  sockaddr *, peeraddr,, socklen_t 就奇怪);   int 听(int  sockfd, int 积压);//还是不明白积压指定什么值比较好?//监听套接字维护两个队列:未完成连接队列(SYN_RCVD)和已完成连接队列(建立)   int 接受(int  listenfd, struct  sockaddr *, cliaddr,, socklen_t  *就奇怪),

# include  & lt; unistd.h>   int 密切(int  sockfd);/*   叉调用一次,返回两次:调用进程返回子进程ID号,子进程返回0   叉的两个用法:一是进程创建自身的一个副本;二是一个进程想要执行另一个程序,副本调用,exec把自身替换成新的程序。   */pid_t 叉(无效);   pid_t  getppid(空白);//获得父进程ID


记录关于网络套接字API