[经验]TCP,UDP完整数据包校验和通用计算

    ICMP,IP,UDP,TCP报头部分都有checksum(检验和)字段。ICMP和IP报头校验和的计算都很简单,使用RFC1071中给出的方法即可完成(如下)。   //计算校验和USHORT checksum(USHORT *buffer,int size){ unsigned long cksum=0; while(size>1) {  cksum+=*buffer++;  size-=sizeof(USHORT); } if(size)&#...
2008-08-19 12:02 | 阅读 35186 次 | 评论 2 条

使用互斥对象Mutex为什么不能实现线程同步?

    有过多线程开发经历的人,对于“互斥对象,临界区,事件,信号量”这四个对象肯定不会陌生。就我自己而言,它们真是"让我欢喜让我忧"。"让我欢喜" 因为利用它们往往能解决掉非常棘手的问题,例如经典的"生产者-消费者"问题,"让我忧"因为,我经常把它们搞混淆,用的时候不知道到底该用哪个好,比如我觉互斥对象和信号量这两者很相似,在解决"生产者-消费者"问题时,为了实现线程同步很多例子中都用了信号量,为什么不用互斥对象实现呢?我试图用互斥对象来做了一下,结果失败了。       今天我决定解决掉这个问题。仔细...
2008-07-31 11:55 | 阅读 15129 次 | 评论 1 条

[经验]VC++编程技巧[不断更新中]

//2008.7.16   2条[1]//防止程序的多个实例同时运行HANDLE hMutex=CreateMutex(NULL,FALSE,"IADSOnlyOnce");/命名Mutex是全局对象 在所有的process都可以访问到     if(ERROR_ALREADY_EXISTS==::GetLastError()){       AfxMessageBox("该程序已经在运行中...");  ExitProcess(1);}  &#16...
2008-07-16 16:37 | 阅读 11055 次 | 评论 0 条

由“获取mac”到"SDK"

//by redice http://blog.bookold.net redice@163.com//2008.6.10     ☆ 如何获取网卡的MAC地址? 进行网络底层编程时,这是一个大家都无法回避的问题,也是一个比较棘手的问题。就我所知道的方法有如下几种: 1 使用NetBois命令。  在网上搜索,可以发现这是最常见的方法。不过有点复杂,使用起来也有限制,如果机器禁用了NetBois,那么这种方法就行不通了。   2 使用Winpcap Packet.dll中的PacketGetNetType函数。  熟悉Win...
2008-06-10 17:03 | 阅读 11854 次 | 评论 1 条
浏览576228次