8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
常用变量类型
宏BUFSIZ为系统默认的缓冲区大小,也是stdio.h中的一个宏定义,默认8092。
结构体sockaddr_in:
常用函数
inet_addr函数与inet_ntoa函数
头文档:#include
inet_addr:该函数用于将 点分十进制IP地址 转换成 网络字节序IP地址。
原型:in_addr_t inet_addr(const char *cp);
返回值:如果正确执行,将返回一个无符号长整数型数;如果传入的字符串不是一个合法的IP地址,将返回 INADDR_NONE。
inet_ntoa功能:该函数用于将网络字节序IP 转化为 点分十进制IP地址。
原型:char *inet_ntoa (struct in_addr);
返回值:如果正确执行,将返回一个字符指针;否则,返回 NULL。
ntohs与htons函数
头文档:#include
ntohs功能:转换端口,将网络字节顺序转换为主机字节顺序;network to host short。
原型:uint16_t ntohs(uint16_t netshort);
htons功能:转换端口,将主机字节顺序转换为网络字节顺序;network to host short。
原型:uint16_t htons(uint16_t netshort);
大端小端是由CPU决定的,与操作系统无关。由于网络字节序是大端,如果主机字节序也是大端,那么不处理,返回原参数即可。如果主机是小端,那么转为大端,例如端口为37,uint16_t类型时2字节,转为二进制就是0000 0000 0010 0101,转为大端时应该交换这2字节,也就是变成0010 0101 0000 0000,即十进制的9472。
看Linux对这两个函数的源码:
可以发现主机为小端时,ntohs和htons是相同的,也就是结果一样,因为参数只有2字节,反正都是交换这两个字节,所以主机-网络和网络-主机都是用这两个函数,只是从字面上不太容易理解。
如果为大端,实际是不处理,这里的宏定义看不出来。
bzero函数
原型:extern void bzero(void *s, int n);
头文档:#include
功能:置字节字符串s的前n个字节为零且包括‘ ’。1
2
3char p[7] = "abcd";
bzero(p,3);
printf("p: %sn",p);//空白
错误处理函数
函数perror()用来将上一个函数发生错误的原因输出到标准错误(stderr),参数s 所指的字符串会先打印出,后面再加上错误原因 字符串。此错误原因依照全局变量 errno 的值来决定要输出的字符串。
函数char *strerror(int errno)将错误代码转换为字符串错误信息。全局变量errno在中定义。
常用的方法:1
2
3
4
5ret = connect(cfd,(struct sockaddr*)&ser_addr, sizeof(ser_addr));
if(ret==-1)
{
perror(strerror(errno));//输出详细错误信息
}
exit函数
用来退出进程,参数为0表示正常退出,否则表示有错误而退出
常用工具
netstat查看结果:
off是计时器状态,表示当前socket没有timer。后面的(0.00/0/0)是时间,因为当前为off,所以都是0
Linux中查看socket状态:cat /proc/net/sockstat(用于ipv4)
sockets: used 137 TCP: inuse 49 orphan 0 tw 3272 alloc 52 mem 46UDP: inuse 1 mem 0RAW: inuse 0 FRAG: inuse 0 memory 0
说明:
sockets: used:已使用的所有协议套接字总量
TCP: inuse:正在使用(正在侦听)的TCP套接字数量。其值≤ netstat –lnt | grep ^tcp | wc –l
TCP: orphan:无主(不属于任何进程)的TCP连接数(无用、待销毁的TCP socket数)
TCP: tw:等待关闭的TCP连接数。其值等于netstat –ant | grep TIME_WAIT | wc –l
TCP:alloc(allocated):已分配(已建立、已申请到sk_buff)的TCP套接字数量。其值等于netstat –ant | grep ^tcp | wc –l
TCP:mem:套接字缓冲区使用量(单位不详。用scp实测,速度在4803.9kB/s时:其值=11,netstat –ant 中相应的22端口的Recv-Q=0,Send-Q≈400)
UDP:inuse:正在使用的UDP套接字数量
RAW:
FRAG:使用的IP段数量
IPv6请看:cat /proc/net/sockstat6
TCP6: inuse 3UDP6: inuse 0RAW6: inuse 0 FRAG6: inuse 0 memory 0
通过这些值,可以很容易计算出当前的tcp请求数,然后做相关的监控。