[置顶] udp 超时设置(select函数的一种用法)

摘要: 最近项目中,需要编写一个udp接收程序。传统的recvfrom是阻塞进行的,即调用recvfrom之后程序就会阻塞,等待数据包的到来,如果没有数据包,程序就永远等待。在很多场景中,我们需要设置超时参数,如果该套接口超时之后仍然没有数据包到来,那么就直接返回。socket编程中这样的超时机制可以使用select和recvfrom这两个函数实现实现代码如下 1 #define RECV_LOOP_COUNT 100 2 int recv_within_time(int fd, char *buf, size_t buf_n,struct sockaddr* addr,socklen_t *len, 阅读全文

posted @ 2012-04-28 15:21 liang_87 阅读(24789) 评论(3) 推荐(2) 编辑

2014年10月30日

网络编程-pcap数据包格式

摘要: Libpcap的官方网站是http://www.tcpdump.org/,该项目和Tcpdump项目是同一个团队维护。Libpcap是一个平台独立的数据包捕获开发包,制定了数据包离线存储的事实标准。接下来我们就介绍一下该标准。 pcap文件格式如下:24字节文件头+( 16字节pcap数据包... 阅读全文

posted @ 2014-10-30 23:05 liang_87 阅读(4137) 评论(0) 推荐(0) 编辑

2014年10月27日

自勉

摘要: 经过了很长时间的沉寂之后,我决定重新开始写技术博客。主要原因是想强迫自己总结已经掌握的技术,梳理知识并得到提高。工作三年多,一直从事的是网络相关的开发,其中也涉及到了Python的使用,用的最多的当然是C。所以此次开博主要关注的方向是网络、C、Python、Linux。由于自己平时还比较喜欢打... 阅读全文

posted @ 2014-10-27 22:38 liang_87 阅读(129) 评论(0) 推荐(0) 编辑

2013年2月20日

c语言字符串函数详解

摘要: c语言字符串函数详解 void *memset(void *dest, int c, size_t count); 将dest前面count个字符置为字符c. 返回dest的值. void *memmove(void *dest, const void *src, size_t count); 从src复制count字节的字符到dest. 如果src和dest出现重叠, 函数会自动处理. 返回dest的值. void *memcpy(void *dest, const void *src, size_t count); 从src复制count字节的字符到dest. 与memmove功能一样.. 阅读全文

posted @ 2013-02-20 16:24 liang_87 阅读(260) 评论(0) 推荐(0) 编辑

2013年开始了

摘要: 农历新年过去了,新的一年开始了。去年没有好好的整理和更新博客,以至于一些掌握的技术没有及时的整理,收获不是很多。今年一定要坚持写博客,更新自己的心得体会,以求能够对大家有所帮助,同时也便于以后遇到同样问题时翻阅。 今年的工作依然围绕网络数据包展开,抓包、捕包、分析包。使用平台是linux,常用语言c 、python。但是也要掌握其他语言,网站技术要掌握。还学得很多,水平依然有限,可叹啊,人生之有涯,而学无涯啊! 阅读全文

posted @ 2013-02-20 15:52 liang_87 阅读(134) 评论(0) 推荐(0) 编辑

2012年6月14日

linux sleep usleep

摘要: 程序中需要休眠的时候,就用到了sleep,接下来我总结一下#include<unistd.h>sleep(1); //停留1秒usleep(1000); //停留1毫秒 阅读全文

posted @ 2012-06-14 17:26 liang_87 阅读(249) 评论(0) 推荐(0) 编辑

linux时间函数总结

摘要: 今天发现一篇非常好的博文,是讲time()和gettimeofday()的。网址如下http://blog.csdn.net/scottgly/article/details/6568513在哥们的基础上,我做了一下修改,内容如下一、time函数 #include<time.h>time_ttime(time_t*calptr);返回距计算机元年的秒数一旦取得这种以秒计的很大的时间值后,通常要调用另一个时间函数将其变换为人们可读的时间和日期#include <time.h>//calendar time into a broken-down time expressed 阅读全文

posted @ 2012-06-14 17:24 liang_87 阅读(3652) 评论(0) 推荐(0) 编辑

2012年5月14日

跟上时代的脚步

摘要: 问题: IT这个行业,从来都是长江后浪推前浪的,如果你敢保持多年不学习,那我就敢保证你会死的很惨 但是我们又没有那么多的时间,去跟踪所有新兴的技术我的解决方案: 浏览专业的网站,了解新技术,对于基本上确定是趋势的新技术,搜几篇入门级的文章,了解其原理, 足矣。在以后的工作中,如果可以用新技术解决就尽量使用。慢慢的就掌握了。 最忌讳的是,不去了解新技术的基本原理,而且对其保持神秘的感觉,这样几年之内你就会发现你已经 落后好多年了,已经快被拍死在沙滩上了。我就是这种人,所以,写这篇文章来自勉,同时也请各位监督。 阅读全文

posted @ 2012-05-14 14:19 liang_87 阅读(135) 评论(0) 推荐(0) 编辑

2012年5月4日

pyc相关

摘要: 大部分的python代码是明文的,如果不想让别人看你的代码怎么办网上有很多办法,这里介绍最简单的,python自带的方法将代码编译成pyc格式有两种方式: 方法一:写一个程序test.py,这样就把c盘的compute.py程序编译成了pyc格式 import py_compilepy_compile.compile(r"c:\compute.py") 方法二:直接使用命令行 python -m py_compile c:\compute.py 阅读全文

posted @ 2012-05-04 18:05 liang_87 阅读(208) 评论(0) 推荐(0) 编辑

2012年5月1日

linux socket 基础知识一

摘要: 一直以来都在做底层网络的开发,最近开始接触socket编程。发现很多书上面基础知识总结的并不精练,而且交代不清,于是决定把我的收获贡献出来。一:认识socket 什么是socket,socket本质包含两个信息--IP和port。但是实际用的过程中你会发现这个词会用在好几种情况下,主要是两种情况。一是,int sockfd=socket(...),此时返回的值是socket;两外一种情况是struct sockaddr,该结构体ipv6的版本是struct sockaddr,其中包括ip和port;其实本质上socket是struct sockaddr,有些程序sockfd在并没有明显绑定I. 阅读全文

posted @ 2012-05-01 16:53 liang_87 阅读(633) 评论(0) 推荐(1) 编辑

导航