一个开放源代码的网络通讯项目,多人合作 (100分)

  • 主题发起人 主题发起人 kgen
  • 开始时间 开始时间
但是,Indy对多线程网络通讯的支持实在太好了。因为,他的核心就是考虑多线程而设计的。
可能是你写的程序的问题,我在Windows下用Indy写TCP程序没有问题,而且,最大连接数也比
原来的Socket控件多,所以,理论上相同连接下,他的CPU占用率应该更低。
Indy自己的Demo的确写得很不好,但是,你只要别照着他的Demo,写程序,还是可以写出高效
的程序来的。主要应该多看Indy的源代码,这样,程序才高效。
 
kgen:
我不太苟同你的意见,首先我觉得的它的多线程核心写的真的不是很好,不够优化,我觉得
甚至还不如 Borland 本身的 TServerSocket 的架构写的好,至于性能我记得看过一个评测,INDY
的性能只是一般,我自己主要是觉得 INDY 的侦听线程和连接线程的现场切换、创建不合理。
至于说最大连接数也比原来的Socket控件多,我不太明白你的,由于 Windows NT/2000 在维护
每个进程的状态内存分配是有限制的,所以在 WIN2000 下最多也是只能创建 2 千多个并发线程,在
大并发且并发数据请求较大的情况下,太多线程反而会迅速降低系统的性能,这个时候线程的现场切换
的代价是非常高的。
至于 CPU 占用率,由于其线程内核不太合理,我认为应该会更高(呵呵,瞎猜的,要找个好模型测试)


Flag := True;
AStream := TStringStream.Create('');
try
while IdTCPClient1.Connected do
begin
if Flag then
begin
Memo.Lines.Add(IdTCPClient1.ReadLn);
Flag := False;
IdTCPClient1.Write(Demo);
end
else
begin
IdTCPClient1.ReadLn; //服务器发送的数据为 1.17 MB,已经设定接收缓存 为 3MB
// IdTCPClient1.ReadStream(AStream, -1, True); //此语句系统则阻塞没有反应
DoElpTime;
end;
end;
finally
IdTCPClient1.Disconnect;
AStream.Free;
end;
 
我也不推荐INdy,Indy用来拖个快速项目还行,如果想做个好系统,不能用Indy.
Indy是开发用来快速开发,这显然不应该是我们的目标.
 
陈一蛟:
你程序中有一句代码引起“此语句系统则阻塞没有反应”。
这个是因为Indy为了提高效率,没有处理界面的响应,只要用Indy的一个控件来响应系统
消息就可以了。
关于我说Indy的最大连接更多的问题是有依据的,同样的程序和写法,用Indy和TSocket的
2个控件就是不一样,我指的最大连接数不是理论上的,而是,实际效果,在相同CPU占用率
下,Indy比Socket控件的连接多。
我看过Socket和Indy控件的代码,感觉Indy更好,至少很多编程的思想,Indy要更领先。
但是,Indy在某些方面的处理的确不是很好。毕竟它开发的时间还不长。
在既要跨平台,又不想写完全不同的两套代码的情况下,Indy是唯一的选择,至少我现在找
不到替代品。
 
ics不错啊,我用它写了一些服务器程序还相当稳定的
 
但是,ICS不跨平台。
 
to Kgen
我们跳转到 http://www.delphibbs.com/delphibbs/dispq.asp?lid=1811274 来讨论阻塞与非阻塞的问题吧
至于跨平台 synapse 绝对是比 INDY 做的漂亮的代码
 
其实要看应用的场合,其实阻塞和非阻塞各有优势。
不过好像有人发现完成端口的方式更高效,我没有在Delphi上是过完成端口,光看C完成端口
的代码,觉得理论上应该效率不错,有谁可以在Delphi上写出完成端口的代码?
 
做了三年delphi+com/com+/dcom + oracle/sql server
对通迅协议感兴趣

QQ:27032000
MSN:fpsky2000@163.net
 
我是初学者,给你UP
 
支持一下..
 
关于网关背后的计算机直接通信的方法,有没有解决的办法啊

传递大文件或大数据,如果用服务器中转,那可是负担太大了
 
如果是大数据考虑使用客户端点对点连接,这样速度会比较快。
同一网关后面的数据直接传输问题还没有好的方案。
 
我想学习学习,有需要说一句。QQ:117685181
 
有网络通信方面的问题可以与我联系
lance0909@hotmail.com
QQ:6903836
 
本人用MySql近三年,对此项目很感兴趣。msn:ZwjGoogle@hotmail.com
 
本人从事用Delphi+sql server多年,有一定的经验,
最近老板按排我搞网络通信方面的项目,刚好对口,
能让我加入吗?
yzk@jmtw.com
 
可以入伙么,代码不一定写的很棒,想进技术顾问组
sspanzer301@163.com
 
monkeyking1983:
非常高兴有你的参加,你可以进技术顾问组,
本软件的技术论坛是http://cc.dust2.com/bbs/,你可以到那里去提出你的建议。

jmyzk:
有其他联系方式吗?
我想和你讨论一下这个软件的网络模块的设计。
 

Similar threads

后退
顶部