1. 在进行 TCP 代码编写前,我们先来了解下基本的知识和函数。
1)网络字节序
TCP/IP 协议规定,网络数据流应采用大端字节序,即低地址高字节。
为使网络程序具有可移植性,使同样的 C 代码在大端和小端计算机上编译后都能正常运行,可以调用以下库函数做网络字节序和主机字节序的转换。
Linux 下的网络字节序和主机字节序的转换如下:
#include<arpa/inet.h>
unit32_t htonl(uint32_t hostlong);
unit16_t htonl(uint16_t netshort);
unit32_t ntohl(uint32_t netlong);
unit16_t ntohl(uint16_t netshort);
注:h 表示 host,n 表示 network,l 表示 32 位长整数,s 表示 16 位短整数。
2)函数
我们通常用点分十进制的字符串表示 IP 地址,以下函数可以在字符串表示和 in_addr 表示之间转换。
(1)字符串转 in_addr 函数
#include <arpa/inet.h>
int inet_aton(const char* str,struct in_addr *addr);
in_addr_t inet_addr(const char* str);
int inet_pton(int family,const char* str,void* addr);
(2)in_addr 转字符串的函数
char* inet_ntoa(struct in_addr inaddr);
const char* inet_ntop(int family,const void* addr,cha