复杂一点的就是screenlets,就是那些小玩意。
要么就是specto,提醒软件。
安装就是系统-系统管理-新立得软件管理器,搜索软件名称卜梁,标记,应用就行了。
需要建立socket,参数是AF_INET,SOCK_RAW,IPPROTO_ICMP
自己构造ICMP数山历搜据包, sendto发送给某地址。
ICMP有多种,你可以发送type为13的时间戳烂闷请求。
然后调用recvfrom会收到type为14的timestamp reply的IP包逗历,
IP头一般是20 Bytes,里面包含src IP,des IP还有TTL等。
IP包的数据就是返回ICMP timestamp reply报文,里面有origTimestamp,recvTimestamp,transStamp,可以计算出时间。
可以参考网页链接
觉得有帮助可以注册帐号,给他点个“星”
原因很简单。因为,你按下一个键之后,缓冲区里面有数据了,也就是说尘余,stdin已经发生了一个事件,就是有数据来了。
你一直没有对缓冲派皮滚区做任何 *** 作,因此stdin一直保持着有数据的状态。
如果你在个select返回之后,用fflush清空缓冲区,或者,把缓冲区数据用scanf,getchar等输入函数给拿出来,数据取完了,stdin缓冲区就没东西了,再select,状态就是等待事件发生状态了。
为了保险,你每次重新把tv给赋值握纯一次.
tv.tv_sec=2
tv.tv_usec=0
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)