最近比较闲,所以想把自己最近2年的linux开发经验总结下。以便查漏补缺,不断提高。有什么问题希望大家提醒我。谢谢支持!
今天先写下我认为有用的基础知识。
1.有关网络字节顺序和主机字节顺序的相互转换
#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
htonl/htons 是将主机字节顺序(16位/32位)转换为网络字节顺序。而ntohl/htohs则是相反.主要用于 数字类型变量的转换
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int inet_aton(const char *cp, struct in_addr *inp);
in_addr_t inet_addr(const char *cp);
将IP地址(字符串形式)转换为网络上使用的2进制形式
char *inet_ntoa(struct in_addr in);则相反
2.time_wait状态太多怎么办?
修改 /ect/sysctl.conf
添加如下2行:
net.ipv4.tcp_tw_reuse = 1//允许重用time_wait状态的socket
net.ipv4_tcp_tw_recycle = 1//允许回收time_wait状态的socket
然后重启内核:sysctl -p;