<强> 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 (strptr const char *, struct in_addr * addrptr);
char * inet_ntoa (struct in_addr inaddr);//不足:不可重入)
//优点:IPv4和ipv6都适合,
//p:表示n:数字
# include & lt; arpa/inet.h>
//注意:成功返回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协议),
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, int sockfd积压);//还是不明白积压指定为什么样的值比较好吗?
监听套接字维护两个队列:未完成连接队列(SYN_RCVD)和已完成连接队列(建立)。
int接受(int listenfd, struct sockaddr * cliaddr socklen_t *就奇怪),
<强> 4。建立连接后强>
# include & lt; unistd.h>
int关闭(int sockfd);
/*
叉调用一次,返回两次:调用进程返回子进程ID号,子进程返回0
叉的两个用法:一是进程创建自身的一个副本;二是一个进程想要执行另一个程序,副本调用exec把自身替换成新的程序。
*/
pid_t叉(空白);
pid_t getppid(空白);//获得父进程ID