欢迎来到服务器设计开发博客!
软件开发以及咨询,请加MSN
QQ:3803308
MSN:huzhangyou2002(AT)gmail.com
Mail: huzhangyou2002(AT)gmail.com
Skypy:CpperHZY2000 or huzhangyou2002(AT)gmail.com
公司网站 http://www.jouhu.com
软件开发以及咨询,请加MSN
QQ:3803308
MSN:huzhangyou2002(AT)gmail.com
Mail: huzhangyou2002(AT)gmail.com
Skypy:CpperHZY2000 or huzhangyou2002(AT)gmail.com
公司网站 http://www.jouhu.com
2
[置顶] @@@@@本博客公告@@@@@
本站长期域名:
域名: http://doserver.net
域名: http://www.doserver.net
域名: http://blog.doserver.net
域名: http://cnc.doserver.net
网站策划人:
胡章优,网名:huzhangyou2002 信仰 信仰2008 huzhangyou 现吉林大学教师
胡章好,网名:huzza 真实的好 吾哥 同济大学计算机硕士 现任职于飞思卡尔
黄武,网名:十话先生,表哥,服装设计,现任职于鸭鸭集团
相关网站:
长春商都
域名: http://doserver.net
域名: http://www.doserver.net
域名: http://blog.doserver.net
域名: http://cnc.doserver.net
网站策划人:
胡章优,网名:huzhangyou2002 信仰 信仰2008 huzhangyou 现吉林大学教师
胡章好,网名:huzza 真实的好 吾哥 同济大学计算机硕士 现任职于飞思卡尔
黄武,网名:十话先生,表哥,服装设计,现任职于鸭鸭集团
相关网站:
长春商都
在fxh7622兄邀请加入一个服务器开发群后,看到里面的群共享里面有老客兄的IOCP源代码。当然是一个Demo版本,但从这个Demo版本中,也看到一个我觉得设计比较好的地方,这里摘录一下,如果老客兄看到后,认为不妥,请留言,我将删除。
域名到期,目前网站还被劫持中,虽然某些地方已经指向到了正确的IP,依然访问出现问题。希望可以尽快恢复。临时将DNS修改为8.8.8.8,竟然可以正常访问了。
给各位造成的不便还请谅解。
给各位造成的不便还请谅解。
| 引用(0)
应该是windows网络编程第二版里面提到过。现在整理一下。
1:在IOCP中投递WSASend返回WSA_IO_PENDING的时候,表示异步投递已经成功,但是稍后发送才会完成。这其中涉及到了三个缓冲区。
网卡缓冲区,TCP/IP层缓冲区,程序缓冲区。
情况一:调用WSASend发送正确的时候(即立即返回,且没有错误),TCP/IP将数据从程序缓冲区中拷贝到TCP/IP层缓冲区中,然后不锁定该程序缓冲区,由上层程序自己处理。TCP/IP层缓冲区在网络合适的时候,将其数据拷贝到网卡缓冲区,进行真正的发送。
情况二:调用WSASend发送错误,但是错误码是WSA_IO_PENDING的时候,表示此时TCP/IP层缓冲区已满,暂时没有剩余的空间将程序缓冲区的数据拷贝出来,这时系统将锁定用户的程序缓冲区,按照书上说的WSASend指定的缓冲区将会被锁定到系统的非分页内存中。直到TCP/IP层缓冲区有空余的地方来接受拷贝我们的程序缓冲区数据才拷贝走,并将给IOCP一个完成消息。
情况三:调用WSASend发送错误,但是错误码不是WSA_IO_PENDING,此时应该是发送错误,应该释放该SOCKET对应的所有资源。
2:在IOCP中投递WSARecv的时候,情况相似。
情况一:调用WSARecv正确,TCP/IP将数据从TCP/IP层缓冲区拷贝到缓冲区,然后由我们的程序自行处理了。清除TCP/IP层缓冲区数据。
情况二:调用WSARecv错误,但是返回值是WSA_IO_PENDING,此时是因为TCP/IP层缓冲区中没有数据可取,系统将会锁定我们投递的WSARecv的buffer,直到TCP/IP层缓冲区中有新的数据到来。
情况三:调用WSARecv错误,错误值不是WSA_IO_PENDING,此时是接收出错,应该释放该SOCKET对应的所有资源。
在以上情况中有几个非常要注意的事情:
系统锁定非分页内存的时候,最小的锁定大小是4K(当然,这个取决于您系统的设置,也可以设置小一些,在注册表里面可以改,当然我想这些数值微软应该比我们更知道什么合适了),所以当我们投递了很多WSARecv或者WSASend的时候,不管我们投递的Buffer有多大(0除外),系统在出现IO_PENGDING的时候,都会锁定我们4K的内存。这也就是经常有开发者出现WSANOBUF的情况原因了。
我们在解决这个问题的时候,要针对WSASend和WSARecv做处理
1:投递WSARecv的时候,可以采用一个巧妙的设计,先投递0大小Buf的WSARecv,如果返回,表示有数据可以接收,我们开启真正的recv将数据从TCP/IP层缓冲区取出来,直到WSA_IO_PENGDING.
2:对投递的WSARecv以及WSASend进行计数统计,如果超过了我们预定义的值,就不进行WSASend或者WSARecv投递了。
3:现在我们应该就可以明白为什么WSASend会返回小于我们投递的buffer空间数据值了,是因为TCP/IP层缓冲区小于我们要发送的缓冲区,TCP/IP只会拷贝他剩余可被Copy的缓冲区大小的数据走,然后给我们的WSASend的已发送缓冲区设置为移走的大小,下一次投递的时候,如果TCP/IP层还未被发送,将返回WSA_IO_PENGDING。
4:在很多地方有提到,可以关闭TCP/IP层缓冲区,可以提高一些效率和性能,这个从上面的分析来看,有这个可能,要实际的网络情况去实际分析了。
-EOF-
1:在IOCP中投递WSASend返回WSA_IO_PENDING的时候,表示异步投递已经成功,但是稍后发送才会完成。这其中涉及到了三个缓冲区。
网卡缓冲区,TCP/IP层缓冲区,程序缓冲区。
情况一:调用WSASend发送正确的时候(即立即返回,且没有错误),TCP/IP将数据从程序缓冲区中拷贝到TCP/IP层缓冲区中,然后不锁定该程序缓冲区,由上层程序自己处理。TCP/IP层缓冲区在网络合适的时候,将其数据拷贝到网卡缓冲区,进行真正的发送。
情况二:调用WSASend发送错误,但是错误码是WSA_IO_PENDING的时候,表示此时TCP/IP层缓冲区已满,暂时没有剩余的空间将程序缓冲区的数据拷贝出来,这时系统将锁定用户的程序缓冲区,按照书上说的WSASend指定的缓冲区将会被锁定到系统的非分页内存中。直到TCP/IP层缓冲区有空余的地方来接受拷贝我们的程序缓冲区数据才拷贝走,并将给IOCP一个完成消息。
情况三:调用WSASend发送错误,但是错误码不是WSA_IO_PENDING,此时应该是发送错误,应该释放该SOCKET对应的所有资源。
2:在IOCP中投递WSARecv的时候,情况相似。
情况一:调用WSARecv正确,TCP/IP将数据从TCP/IP层缓冲区拷贝到缓冲区,然后由我们的程序自行处理了。清除TCP/IP层缓冲区数据。
情况二:调用WSARecv错误,但是返回值是WSA_IO_PENDING,此时是因为TCP/IP层缓冲区中没有数据可取,系统将会锁定我们投递的WSARecv的buffer,直到TCP/IP层缓冲区中有新的数据到来。
情况三:调用WSARecv错误,错误值不是WSA_IO_PENDING,此时是接收出错,应该释放该SOCKET对应的所有资源。
在以上情况中有几个非常要注意的事情:
系统锁定非分页内存的时候,最小的锁定大小是4K(当然,这个取决于您系统的设置,也可以设置小一些,在注册表里面可以改,当然我想这些数值微软应该比我们更知道什么合适了),所以当我们投递了很多WSARecv或者WSASend的时候,不管我们投递的Buffer有多大(0除外),系统在出现IO_PENGDING的时候,都会锁定我们4K的内存。这也就是经常有开发者出现WSANOBUF的情况原因了。
我们在解决这个问题的时候,要针对WSASend和WSARecv做处理
1:投递WSARecv的时候,可以采用一个巧妙的设计,先投递0大小Buf的WSARecv,如果返回,表示有数据可以接收,我们开启真正的recv将数据从TCP/IP层缓冲区取出来,直到WSA_IO_PENGDING.
2:对投递的WSARecv以及WSASend进行计数统计,如果超过了我们预定义的值,就不进行WSASend或者WSARecv投递了。
3:现在我们应该就可以明白为什么WSASend会返回小于我们投递的buffer空间数据值了,是因为TCP/IP层缓冲区小于我们要发送的缓冲区,TCP/IP只会拷贝他剩余可被Copy的缓冲区大小的数据走,然后给我们的WSASend的已发送缓冲区设置为移走的大小,下一次投递的时候,如果TCP/IP层还未被发送,将返回WSA_IO_PENGDING。
4:在很多地方有提到,可以关闭TCP/IP层缓冲区,可以提高一些效率和性能,这个从上面的分析来看,有这个可能,要实际的网络情况去实际分析了。
-EOF-
首先非常感激作者的代码,由于自己对MFC比较抵触,所以花时间修改了一下这个代码。当然其中也参考了自己之前的IOCP的代码。
原文:http://www.codeproject.com/KB/IP/iocp_server_client.aspx
目前还未得到原文作者的许可,故只说明一下修改的地方:
原文:http://www.codeproject.com/KB/IP/iocp_server_client.aspx
目前还未得到原文作者的许可,故只说明一下修改的地方:
最近身体状态非常不稳定,杂事也比较多,博客疏于更新,对不住大家了。另外心得体会也不少,只是未好好整理,今天抽点时间,更新一下,并将近期的一个工作整理一下。
1:学会了自己做肉饼汤,调养身体。
2:彻底换了个解决方案,解决了某安全系统的视频监控识别。
3:MM的计划由于期末考试的进入而有所耽搁,希望考试结束,团队继续开会,好好调整。
4:哥哥嫂嫂都来到长春了,一切还好,希望店里生意能够好一些,同时也希望他们能够开拓更好的方式经营。
5:听说富奥申报了新能源车的项目,希望可以去参与参与学习学习,改天和老师商量一下,能否自己去富奥做课题。
6:cancan毕业了,恭喜,为了庆祝,送了apple itouch以作纪念。
7:另外,修改了codeproject上面一个IOCP项目,已经测试,解决了目前自己发现的几个bug。并邮寄作者一份,以得到许可。项目见:http://www.codeproject.com/KB/IP/iocp_server_client.aspx
1:学会了自己做肉饼汤,调养身体。
2:彻底换了个解决方案,解决了某安全系统的视频监控识别。
3:MM的计划由于期末考试的进入而有所耽搁,希望考试结束,团队继续开会,好好调整。
4:哥哥嫂嫂都来到长春了,一切还好,希望店里生意能够好一些,同时也希望他们能够开拓更好的方式经营。
5:听说富奥申报了新能源车的项目,希望可以去参与参与学习学习,改天和老师商量一下,能否自己去富奥做课题。
6:cancan毕业了,恭喜,为了庆祝,送了apple itouch以作纪念。
7:另外,修改了codeproject上面一个IOCP项目,已经测试,解决了目前自己发现的几个bug。并邮寄作者一份,以得到许可。项目见:http://www.codeproject.com/KB/IP/iocp_server_client.aspx
| 引用(0)
之前得到Ditto兄的允许,基于其CGBT做开发,成就了今天的吉大美美。目前公网做了一个迁移版本,以供朋友看看使用。近期完成内部全部测试后,可以考虑对外使用。
公网地址:
http://cae.jlumm.com
普通测试用户:huzhangyou
密码:doserver
管理组用户密码暂不公布。有需要的可以给我留言。
近期计划:
将Announce.php开发成一个独立的Server服务程序。采用select模型以保证其windows以及Linux的兼容性。
该Server程序具有跨平台功能。
公网地址:
http://cae.jlumm.com
普通测试用户:huzhangyou
密码:doserver
管理组用户密码暂不公布。有需要的可以给我留言。
近期计划:
将Announce.php开发成一个独立的Server服务程序。采用select模型以保证其windows以及Linux的兼容性。
该Server程序具有跨平台功能。
This function discovers occurrences of network events for the indicated socket, clear internal network event records, and reset event objects (optional).
服务器开发中MSDN函数WSAEventSelect对事件FD_WRITE 发生的原因解析
总结三种情况:
1:第一次调用connect或者WSAConnect
2:第一次调用accept或者WSAAccept
3:上一次通过调用send或者WSASend返回WSAEWOULDBLOCK,此时缓冲区有空余位置的时候
将会触发FD_WRITE事件。
服务器开发中MSDN函数WSAEventSelect对事件FD_WRITE 发生的原因解析
总结三种情况:
1:第一次调用connect或者WSAConnect
2:第一次调用accept或者WSAAccept
3:上一次通过调用send或者WSASend返回WSAEWOULDBLOCK,此时缓冲区有空余位置的时候
将会触发FD_WRITE事件。
最近在涉及到分子动力学以及耗散分子动力学的时候,一篇关于最新的VS2008编译的问题的文章直接被墙了,所以就自己来了一遍。做了三件工作:
1:编译了Lammps 2008年05-17版本
2:编译了Lammps 2009年07-07版本
3:编译了Lammps 2010年01-19版本
其中编译Lammps 2010年01-19版本是我最痛苦的过程,但是未经测试是否能够计算DPD,不过几个基本的算例是可以的。编译其他两个版本相对容易一些,按照src/Make/wnidows目录里面的note.i 基本可以完成。当然也非常感叹作者的代码写法非常精妙。
尤其是在08和09年的版本,默认的几个计算模型都不算。当需要包含某个计算模型的时候,将该模型里面相关的文件包含到编译环境,然后替换文件夹中的style_dpd.h,自动将dpd模型加入项目中。其他模型也一样。
下面不说多了,我把可以编译的项目发上来。
我目前只包含了DPD的模型进去,需要COLLOID,DIPOLE模型的时候,src/目录下面该目录的文件加进去,编译即可。
下载文件 (已下载 2 次)
-END-
1:编译了Lammps 2008年05-17版本
2:编译了Lammps 2009年07-07版本
3:编译了Lammps 2010年01-19版本
其中编译Lammps 2010年01-19版本是我最痛苦的过程,但是未经测试是否能够计算DPD,不过几个基本的算例是可以的。编译其他两个版本相对容易一些,按照src/Make/wnidows目录里面的note.i 基本可以完成。当然也非常感叹作者的代码写法非常精妙。
尤其是在08和09年的版本,默认的几个计算模型都不算。当需要包含某个计算模型的时候,将该模型里面相关的文件包含到编译环境,然后替换文件夹中的style_dpd.h,自动将dpd模型加入项目中。其他模型也一样。
下面不说多了,我把可以编译的项目发上来。
我目前只包含了DPD的模型进去,需要COLLOID,DIPOLE模型的时候,src/目录下面该目录的文件加进去,编译即可。
下载文件 (已下载 2 次)-END-
1:《计然曰》
2:《范蠡传》
3:《天才向左,疯子向右》
20100518已经完成以上三本书的阅读,心中也解开了一些谜团。对列国时候的事有更宏观的一个掌握,当然对很多电影里面的修改历史也表示理解。也更加将范蠡在自己心中的地位提升。从始至终,助越灭吴只是范蠡的一个过程而已,整个人生中,他自己始终超然于世界,包括最后文种的劝说。从这个理解来说,范蠡的思想应该很大一部分来自于老子。而史书记载,计然是文子,文子是老子的学生。所以和猜测基本一致。另外有文称文子很可能是老子本人,如果这个假设成立的话,那就更有意思了。
1:从年代来说这个极有可能
2:从战略方案以及为人方式来说,也非常可能
我们来假设这个成立的话,说明了
1:老子不仅仅是一个超脱世俗的人,而且具备治国、经商的奇才
2:老子也不仅仅是看透凡世,也希望透过自己的面通过他手来实现自己的政治理想,而告诉世人,他拥有这个治国、打天下、经商的能力。
3:老子也具有其政治局限性,也就是依然会通过这种方式摆脱他人认为他吃不到葡萄葡萄酸的嫉妒。
当然这也仅仅是我的假设而已。
参考:http://amperechina.blog.163.com/blog/static/3260720620103455221347/ (文子是老子学生)
http://baike.baidu.com/view/420512.htm (文子介绍)
http://hi.baidu.com/wyp%CA%E9%B7%A8%D7%F7%C6%B7/blog/item/d0624b847b184e26c65cc38e.html (范蠡是老子学生之说)
4:重读《道德经》
5:重读《韩非子》
6:重读《庄子》
预计20100525日完成。
-END-
2:《范蠡传》
3:《天才向左,疯子向右》
20100518已经完成以上三本书的阅读,心中也解开了一些谜团。对列国时候的事有更宏观的一个掌握,当然对很多电影里面的修改历史也表示理解。也更加将范蠡在自己心中的地位提升。从始至终,助越灭吴只是范蠡的一个过程而已,整个人生中,他自己始终超然于世界,包括最后文种的劝说。从这个理解来说,范蠡的思想应该很大一部分来自于老子。而史书记载,计然是文子,文子是老子的学生。所以和猜测基本一致。另外有文称文子很可能是老子本人,如果这个假设成立的话,那就更有意思了。
1:从年代来说这个极有可能
2:从战略方案以及为人方式来说,也非常可能
我们来假设这个成立的话,说明了
1:老子不仅仅是一个超脱世俗的人,而且具备治国、经商的奇才
2:老子也不仅仅是看透凡世,也希望透过自己的面通过他手来实现自己的政治理想,而告诉世人,他拥有这个治国、打天下、经商的能力。
3:老子也具有其政治局限性,也就是依然会通过这种方式摆脱他人认为他吃不到葡萄葡萄酸的嫉妒。
当然这也仅仅是我的假设而已。
参考:http://amperechina.blog.163.com/blog/static/3260720620103455221347/ (文子是老子学生)
http://baike.baidu.com/view/420512.htm (文子介绍)
http://hi.baidu.com/wyp%CA%E9%B7%A8%D7%F7%C6%B7/blog/item/d0624b847b184e26c65cc38e.html (范蠡是老子学生之说)
4:重读《道德经》
5:重读《韩非子》
6:重读《庄子》
预计20100525日完成。
-END-
受好友推荐,才知道有这本书。略评价几句。
1:从书中那些名词和地方以及很配套的图片来看,作者应该不单纯是一个写书着,而是一个叙述者或者主人公的身份来讲述的。
2:作者对Bob的描述很有可能是和作者有很大的关系,很多的事情也许只有当事人才会那么清楚。在自己接触最近的一个朋友后,萌生自己向异国创业的打算,所以书中很多东西也许对自己大有用处。另外从小说中和现实中自己所看到的也极其相识。如对ZF部门对外商的看法和内商人的看法完全不一样。去年底和某招商部门洽谈的时候,也让自己体会到了这一点。所以如果投入异国的话,也许境遇很相识,国内这块牌已经不好打了,资源已经分配的所剩无几了,大家智商相当,夹缝中分到的也许连汤也是掺过水的。
3:从人性的弱点看来,Bob抓住了很多大众心理的弱点,也是他能够从中成功的关键,当然和个人的魅力也非常相关。这点也许从不同的女人对他独有的青睐可以看出。
4:个人倒是非常佩服Harry,老高呢,开始被Bob形容非凡,从最后看来,也仅仅是凡夫俗子罢了。Harry的那种商人气息更浓一些,老高仅仅是打工者而已。
5:从作者列出的目录来看,在特殊的环境下,Bob也无力回天,也许也是自己要重新对待自己的路的深层原因,这点自己也从这一年多的经营企业中看到了,从书中更加能够对自己的想法找到共鸣。
6:书虽然还没有写完,但是从个人角度来看,应该不需要再看下去了,那些东西作者所表达的需要自己吸收的自己也差不多吸收了,但是要做到,也许需要时间的磨练和凤凰涅槃的洗礼。
7:最后感谢朋友的推荐以及作者的好书。致礼。
-END-
1:从书中那些名词和地方以及很配套的图片来看,作者应该不单纯是一个写书着,而是一个叙述者或者主人公的身份来讲述的。
2:作者对Bob的描述很有可能是和作者有很大的关系,很多的事情也许只有当事人才会那么清楚。在自己接触最近的一个朋友后,萌生自己向异国创业的打算,所以书中很多东西也许对自己大有用处。另外从小说中和现实中自己所看到的也极其相识。如对ZF部门对外商的看法和内商人的看法完全不一样。去年底和某招商部门洽谈的时候,也让自己体会到了这一点。所以如果投入异国的话,也许境遇很相识,国内这块牌已经不好打了,资源已经分配的所剩无几了,大家智商相当,夹缝中分到的也许连汤也是掺过水的。
3:从人性的弱点看来,Bob抓住了很多大众心理的弱点,也是他能够从中成功的关键,当然和个人的魅力也非常相关。这点也许从不同的女人对他独有的青睐可以看出。
4:个人倒是非常佩服Harry,老高呢,开始被Bob形容非凡,从最后看来,也仅仅是凡夫俗子罢了。Harry的那种商人气息更浓一些,老高仅仅是打工者而已。
5:从作者列出的目录来看,在特殊的环境下,Bob也无力回天,也许也是自己要重新对待自己的路的深层原因,这点自己也从这一年多的经营企业中看到了,从书中更加能够对自己的想法找到共鸣。
6:书虽然还没有写完,但是从个人角度来看,应该不需要再看下去了,那些东西作者所表达的需要自己吸收的自己也差不多吸收了,但是要做到,也许需要时间的磨练和凤凰涅槃的洗礼。
7:最后感谢朋友的推荐以及作者的好书。致礼。
-END-
最近在一个项目中,涉及到了C#的程序和一个C++的程序进行UDP交互数据的,所以就连续写了两个模块。希望能对大家有所帮助:
源代码下载:
下载文件 (已下载 55 次)
源代码下载:
下载文件 (已下载 55 次)
感谢一下刘博同志的果冻和蛋糕,感谢cancan的礼物,Sennheiser MX760耳机,很高兴团队的基本在的都能来吃蛋糕。今天是我的生日,这段时间,大家为了美美的开发,付出了很多,也非常辛苦。在这里慰问一下大家了。
感谢cancan姐姐的Sennheiser MX760耳机,音质真的很好,差点被我煲坏了,一开始就开特别大的音量,心疼死cancan姐姐了。这些天,身体一直不是很舒服,也在适当调整自己,以期能够以一种新的姿态来迎接即将到来的考验。Just Try and Do it吧。
放出两个自己设计的类吧,一个C#的一个C++的,多多指点,如果您要感谢,就感谢cancan,^-^.
-EOF-
感谢cancan姐姐的Sennheiser MX760耳机,音质真的很好,差点被我煲坏了,一开始就开特别大的音量,心疼死cancan姐姐了。这些天,身体一直不是很舒服,也在适当调整自己,以期能够以一种新的姿态来迎接即将到来的考验。Just Try and Do it吧。
放出两个自己设计的类吧,一个C#的一个C++的,多多指点,如果您要感谢,就感谢cancan,^-^.
-EOF-
| 引用(0)
项目的原因,书籍没有按照自己的预想,一个星期完成。当然这期间收获也很多。
1:被继续推荐了几本书和几个电影。
2:结识了两个很不错的朋友。
3:MM这盘棋即将开始,团队辛苦了。
4:另外的几个今年寄托很大的项目,也即将开始,感谢这些朋友对自己的帮助,感谢这些长者对晚辈的栽培。
一点遗憾:
上海之行因为和项目冲突,只能取消。非常抱歉,领导。
两句祝福:
老师身体健康
父母身体健康,叔阿姨身体健康。
自己一定尽快完成上周的读书计划。
-EOF-
1:被继续推荐了几本书和几个电影。
2:结识了两个很不错的朋友。
3:MM这盘棋即将开始,团队辛苦了。
4:另外的几个今年寄托很大的项目,也即将开始,感谢这些朋友对自己的帮助,感谢这些长者对晚辈的栽培。
一点遗憾:
上海之行因为和项目冲突,只能取消。非常抱歉,领导。
两句祝福:
老师身体健康
父母身体健康,叔阿姨身体健康。
自己一定尽快完成上周的读书计划。
-EOF-
| 引用(0)



2006/07/16
14:36
19836




