一、
字节序:多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序
主机序 //网络序
常见的字节序:Little endian (小端)将低序字节存储在起始地址
大端:将高位字节存储在起始地址
htonl(host to net long)/htons/ntohs/ntohl大小端模式的转换
二、IP地址及端口号
struct sockaddr
{
short int sa_family;
char sa_data[14];
}
for ipv4
struct sockaddr_in /*INET*/
{
sa_family_t sin_family;
struct in_addr sin_addr;
unsigned short int sin_port;
}
struct in_addr
{
uint32_t s_addr;
}
struct sockaddr_un /*本地UNIX*/
{
sa_family_t sun_family;
char sun_path[108];
}
三、IP地址的转换
int inet_aton(const char *cp, struct in_addr inp);
in_addr_t inet_addr(const char *cp);
int inet_ntoa(const char *cp, struct in_addr *inp);
四、DNS –HostName
struct hostent
{
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
#define h_addr h_addr_list[0]
}
struct hostent *gethostbyname(const char *name);
五、TCP编程
服务器socket、bind、listen、accept、send/recv、close
客户端socket、connect、send/recv、close
不通过IP,而通过gethostbyname来请求服务器端: 无法连接是因为没有启动daytime服务;解决办法:安装xinetd、修改/etc/xinetd.d/daytime文件,将两个disable 的值yes改为no,然后重启/etc/init.d/xinetd restart
六、UDP编程
服务器socket、bind、recvfrom、处理、sendto、close
客服端socket、sendto、recvfrom、close