。。。。。。。 (0分)

  • 主题发起人 主题发起人 陈一蛟
  • 开始时间 开始时间

陈一蛟

Unregistered / Unconfirmed
GUEST, unregistred user!
。。。。。。。。。。。。。。。。
 
楼主,我用的SYNAPSE,你以上说的我大致同意,不过有一点想请教,
如果在阻塞模式下的服务器上的客户都是长连接,小数据包通讯,而当客户数大起来的时候,
在服务器发送数据给某些客户时,如何避免因为阻塞加上客户网络质量问题而造成的发送线程的停滞,因为发送数据没有超时概念,而阻塞时如果没有发送完是不会返回的,
也就是说,服务器同时发送1000个包给连在自己上面的客户端,假设采用10个线程处理,很有可能导致这10个线程同时停滞(因为这10个线程当前发送数据的目标客户都是网络质量相当的差的)

以上问题应该如何解决?
 
。。。。。。。。。。。。
 
楼主既然说组塞好,那把你的测试方法和数据举出来呀!
 
我的测试结果是非组塞好,当然我是没有用任何VCL组件,都是自己用API写的,
组塞下我是多线程传输文件,非组塞下我是用WSAEventSelect,具体的效果我
可以写个简单的测试结果统计一下,有时间我发部出来,不过就看同一个文件
还是非组塞快点
 
》》》而且写 Windows 网络编程一书的作者有关网络的性能对比的论断也是有误的
哪个地方出了问题,难道是他没有用你说哪几个元件,而是用API?
 
继续学习
请问楼主,既然说indy组件效果最差,那为什么borland把indy组件
作为标准网络组件呢?我想borland的工程师不会那么低水准吧
希望楼主能答复,让我以后也有个正确选择
 
。。。。。。。。。。。。。。
 
楼住还没回答偶的问题哦............
 
TDXServer是用的Select
 
、。。。。。。。。。。。。。。。
 
TServerSocket异步模式效率不高,用他做测试根本不能代表异步模式就很差
 
怎么没人给我一个答案啊
 
Indy的使用简单,效率不错,只是比非组塞的效率要低一些,
 
to 张无忌:
那请问如果要写网络程序,究竟是用组塞模式还是用非组塞模式?
 
不同的需要,比如FTP,简单点的可以用组塞,容易控制数据流量
其他的比如聊天类的,用非组塞好点
 
我还是比较赞同张的看法,我就较为喜欢用非阻塞的。
 
其实INDY构件写的相当不错,我建议大家看看INDY作者写的Indy in Depth书真是受益匪浅。
提到INDY的性能,我用INDY开发过很多项目,9.11后的性能提高很大。而且很稳定。
 
谢谢楼主,这样的话,我想应该是阻塞的方式好些了,我没好好看API里的发送超时设置.

其实收数据只要一个线程就可以了,就是说一个监听线程接受连接,一个接收线程遍历所有的连接来收数据,用SELECT绝不会慢的,因为SELECT出的数据已经在本地缓冲了,另外更好移植,说实话,我也不确定WINDOWS内部的异步通知数据到达是怎么做的,如果它内部也是使用SELECT那肯定不会比阻塞快的,问题是有可能它不是使用的SELECT,我看有本书里写的.

不过至少我写的程序可以直接移植到LINUX,因为我使用的都是标准的,哈哈
 
element,
这书在哪有下啊,发给我也行
yangying_2000@163.com

还有
我的测试是SYNAPSE每秒可以发1000个小包
数据量可以达到10M,如果缓冲设置为64K的话
 
后退
顶部