本文阐述了为何socket连接锁定在CLOSE_WAIT状态,以及通过什么措施力求避免这种情况。
总结
也许我们避免不了CLOSE_WAIT状态冻结的再次出现,但我们会使影响降到最小,希望那个重用套接字选项能够使得下一次重新建立连接时可以把CLOSE_WAIT状态踢掉。而且通过设置SO_LINGER为零,使得我们主动拆除连接时,风险降低。
阅读全文>
发表于 @ 2005年01月30日 00:24:00|评论(loading...)|收藏
该篇文章是Socket里讲得比较透彻,行文风格很流畅,细节照顾得较周到。阅读全文>
发表于 @ 2005年01月23日 00:56:00|评论(loading...)|收藏
LDBIVR程序中要监视特定文件夹的文件落地或者删除事件,本来要用SHELL中的事件通知机制,后来因为要考虑到各种意外事件,如服务意外退出、服务器崩溃等,遂作罢。
对于目录事件异步通知,大致有三个方法:
调用Windows的api函数ReadDirectoryChanges监视指定目录中文件(推荐使用),这个使用异步IO;
或者用SHChangeNotifyRegister和SHChangeNotifyDeregister来注册事件SHChangeNotify;
或者调用API函数-FindFirstChangeNotification 、FindCloseChangeNotification、FindNextChangeNotification 和WaitForSingleObject.
著名的FileMon工具用的是虚拟驱动。
相关资源:
1:《监视程序的编制》;
2:《Win32中的目录监控》;
3:《change journals》;
4:《CDirectoryChangeWatcher - ReadDirectoryChangesW all w阅读全文>
发表于 @ 2005年01月19日 23:21:00|评论(loading...)|收藏
摘要:本文阐述了结构体/大内存块分布式传输时常用的四种打包方法,并演示了您如何利用这四种方法通过MSMQ发送/读取数据。
解法一、二和四依赖于Microsoft平台,而boost::serialization解法则仅依赖于ANSI C++标准的设施,很容易移植。
解法一和二只是简单地复制字节流,对于Deep Pointer的传输可能就要借助于boost::serialization解法了,它可以保存和恢复pointers,也可以保存和恢复pointer所指向的数据,甚至可以正确处理指向共享数据的pointers。阅读全文>
发表于 @ 2004年12月15日 20:40:00|评论(loading...)|收藏
微软研究院出品的Greta并不支持“Named Groups”特性,这在dotNet Regex引擎中是提供的。
在Greta花费了半天时间总是试验不出来这个特性后,只好去问了维护这个引擎的微软工程师。下面是来往信件。阅读全文>
发表于 @ 2004年09月22日 10:45:00|评论(loading...)|收藏
Socket API,CAsyncSocket,CSocket内幕及其用法
jmcooler(原作)
关键字 Socket CAsyncSocket CSocket CSocketFile 同步(阻塞) 异步(非阻塞) 阅读全文>
发表于 @ 2004年08月06日 17:02:00|评论(loading...)|收藏
仰仗kenwhale的指点,我试验好了Richedit控件的背景图片设置(VC++6.0+Sp6环境下)。
阅读全文>
发表于 @ 2004年07月20日 18:00:00|评论(loading...)|收藏
使用Unicode或者GB方式发送短信,有几省的用户接收到空短信或者乱码;同时,2/3的省份用户接收正常。知道其中一种原因是什么吗?阅读全文>
发表于 @ 2004年07月08日 18:05:00|评论(loading...)|收藏