。。。。。。。。。。 (100分)

  • 主题发起人 主题发起人 陈一蛟
  • 开始时间 开始时间
仔细研究那个结果:
1.Blocking方式两个线程才处理一个连接。不可用。
2.Non-Blocking方式CPU占用太多,也不可用。
3.在Event方式每个线程好象是处理64个连接。
4.Overlapped方式基于事件,但在连接数少于7000时明显不如非Overlapped的事件异步。有
点不可理解。
5.完成端口性能最佳。50000个连接的时候CPU占用才65%。
 
Borland 的 ScktSrvr用的可是线程阻塞模式啊,虽然用的是ServerSocket
 
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
 
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
 
>>而且这个测试没有注明是使用阻塞还是非阻塞模式?
WSAXXXX都是异步模式。纯粹的阻塞模式是指用线程来调用WinSocket的异步函数,纯粹的
非阻塞模式是指通过线程调用WinSocket的同步函数。也就是说,阻塞模式在线程中使用
等待函数,而非阻塞模式是不使用等待函数(相当于死循环)。所以阻塞模式/非阻塞模式
与同步函数/异步函数是两个层面的概念。当然,阻塞模式通过什么来阻塞?事件、消息,
还有定时。

完成端口代码根本不是什么神秘的东西。只是每个人的实现方式不同而已。张无忌的代码
比较单纯(连对象都不用),而我的代码用到了一大堆单元(当然是自己写的单元,我连
Classes单元也不用的)。而且你看你引用的代码中,完成端口的几个主要要素已经用到了,
只是不知道如何投递IO请求和采集工作者线程送来的数据包而已。
 
哪个不是重叠端口是重叠I/O加异步EVENT模式,由于存在重叠模式,所以开销要大一些,
当然比不上EVENT异步模式,但是如果使用得当比EVENT异步模式要灵活的多,
上面的测试数据都是在同一条件下测试出来的,
还有上面的代码根本不是我写的,呵呵
 
学习学习
 
为什么组塞方式只用了两个线程,一个是读数据一个是写数据了,
原因是多个线程用同一个套接字有很多问题,如果用一些同步
方式复用套接字和单线程区别不大,
 
讨论了这么久了呀:)

我就不插了:)
 
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
 
我倒~~~~~~~~~~阿娇,你的问题也太长了。。。。。看得我头晕
 
。。。。。。。。。。。。。。。。。。。。
 
谁有Delphi的完成端口的例子?
给我一份。
kgen@163.com
这个开放源代码的网络通讯项目要用:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1682567
 
那本书的作者就是winsock的开发人员之一,他们对这个比较熟悉,如果你想知道
他们为什么这么做,可以去买那本书,就是贵了点,而且没有光盘,要自己去下代
码。
至于IIS比DXSOCK慢,那是自然,IIS功能强大,扩展性绝对不是小家子气的DXSOCK
可以比的,IIS支持的东西太多了,自然速度要慢一些,要是和其他有名气的WEB服
务器比,再说了,你相信DXSOCK的测试报告?
 
据说IIS6和Linux下一样了,所有的HTTP协议在http.sys这个内核驱动里进行
数据读写,哪个时候DXSOCK更没的比了
 
有时可能用上,收藏先
 
。。。。。。。。。。。。。。。。
 
我找到了 但是只有连接 也无代码
 
IIS是短时间的连接,如果长时间大数据量的连接,IIS的方式就可能不太好了。
 
对于长连接来说,比如FTP什么的,用完成端口一样可以行,当然也要限制同时在线人数
在TCP设置方面也要做一些修改。
 
后退
顶部