随笔分类 -  网络编程

摘要:最近使用ASP.NET为公司构建了一个简单的公共网站(该网站的地址:http://superexpert.com/)。在这个过程中,我们使用了数量很多的免费工具,如果把构建ASP.NET网站的必备工具总结一下,将会是一件十分有趣的事情。这些工具既支持ASP.NET Web Forms又支持ASP.NET MVC。性能工具读了两本关于网站的前端性能的书(这两本优秀的图书分别是:《High Performance Web Sites》 和 《Even FasterWeb Sites》,作者是Steve Souders)以后,我对网站的前端性能十分敏感。根据Steve Souders的性能黄金法则: 阅读全文
posted @ 2011-02-25 10:17 董雨 阅读(276) 评论(0) 推荐(0)
摘要:http://blog.huang-wei.com/2010/11/21/winsock-io/Windows Socket IO 模型套接字架构应用程序使用Winsock与传输协议驱动沟通时AFD.SYS负责缓冲区的管理。这就意味着当一个程序调用send或者WSASend发送数据时,数据将被复制到AFD.SYS它自己的内部缓冲区中(依赖SO_SNDBUF的设置)WSASend调用立即返回。然后AFD.SYS在程序后台将数据发送出去。当然,如果程序想要处理一个比SO_SNDBUF设置的缓冲区需求更大的发送请求,WSASend的调用就会阻塞直到所有的数据都被发送出去。类似的,从远程客户端接收数据 阅读全文
posted @ 2011-02-16 12:00 董雨 阅读(569) 评论(0) 推荐(0)
摘要:声明:除CSDN外的任何媒体转载必须注明作者以及“转载自CSDN”。本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教。 一:select模型 二:WSAAsyncSelect模型 三:WSAEventSelect模型 四:Overlapped I/O 事件通知模型 五:Overlapped I/O 完成例程模型 六:IOCP模型 老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。 这和Socket模型非常类似。下面我就以老陈接收信件为例讲解Socket I/O模型 阅读全文
posted @ 2011-02-16 11:21 董雨 阅读(184) 评论(0) 推荐(0)
摘要:这个内容在cnblogs中也讨论过很多次了,这两天大概看了一些资料,看到一些简单的性能指标拿出来和大家讨论一下。socket + threads/threadpool大概性能:小于1500个连接 实现:accept一个socket,就交给一个线程去管理,比较笨,但也比较有效,因为是同步方式,控制起来很方便。高级点的,就是交给一个线程池去管理,线程池由系统自动托管,省去了开销线程的时间。一般小型项目,用这个完全足够,开发也简单。但要注意,如果若干socket长时间占用线程池中的线程,同时其它连接数又比较多,很容易出现提示说你没有足够的线程供使用。呵呵,让socket少做点事,少占用时间,换一个快 阅读全文
posted @ 2011-02-16 11:20 董雨 阅读(250) 评论(0) 推荐(0)
摘要:在做Socket 编程时,我们经常会要问,单机最多可以建立多少个 TCP 连接,本文将介绍如何调整系统参数来调整单机的最大TCP连接数。Windows 下单机的TCP连接数有多个参数共同决定,下面一一介绍:最大TCP连接数[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]TcpNumConnections = 0x00fffffe (Default = 16,777,214) 以上注册表信息配置单机的最大允许的TCP连接数,默认为 16M。这个数值看似很大,这个并不是限制最大连接数的唯一条件, 阅读全文
posted @ 2011-02-16 09:44 董雨 阅读(233) 评论(0) 推荐(0)
摘要:谁说腾讯不创新?WEB2.QQ就是个挺强悍的反击。咋一看到时我不禁摸摸头,难道这就是传说中的QQOS?。电脑上国内普及的1M网速,首次加载2s,登录加载3s,大部分用户的体验应该都优于这个。3G体验也近似于这种水准。算上各种因素(带宽被占用等),就算以20K/S的网速来看,首次加载的时间10s,而登录加载15秒,这是GPRS能达到的顶级体验。或许,从门户站点的体验上来看,这并不是特别难以实现的事情;然而这是个应用,对比起许多应用程序的几秒乃至几十秒的启动速度而言,这种体验已经非常优秀。先看HTML标签,它有着如下class:。class="javascriptEnabledwinwin6_1f 阅读全文
posted @ 2011-01-11 16:02 董雨 阅读(338) 评论(0) 推荐(1)
摘要:1.采用循环方式://.....ManualResetEvent allDone = new ManualResetEvent(false);//信号量listener.Listen(100);while (true){ allDone.Reset(); listener.BeginAccept(new AsyncCallback(AcceptCallBack),listener); allDone.WaitOne();}void AcceptCallBack(IAsyncResult result){ allDone.Set(); //...... }有时候觉得对ManualResetEve 阅读全文
posted @ 2010-11-28 12:36 董雨 阅读(522) 评论(0) 推荐(0)