indy的idUdpServer的问题 ( 积分: 200 )

  • 主题发起人 主题发起人 constantine
  • 开始时间 开始时间
C

constantine

Unregistered / Unconfirmed
GUEST, unregistred user!
这个控件怎么用多线程
我想用他跟多个Client(也是用idUdpServer控件)通信,可能同时跟几个Client要进行文件传送,要怎么处理比较合适?架构要怎么样才比较好?

还是说Client与之间再建立一套独立的udp(这个我觉得不太行,Client数量多了点).
请高手说说你们的看法
 
这个控件怎么用多线程
我想用他跟多个Client(也是用idUdpServer控件)通信,可能同时跟几个Client要进行文件传送,要怎么处理比较合适?架构要怎么样才比较好?

还是说Client与之间再建立一套独立的udp(这个我觉得不太行,Client数量多了点).
请高手说说你们的看法
 
idUdpServer 本身就是多线程的,直接使用socket对象操作就行了
procedure TfrmMain.IdTCPServerExecute(AThread: TIdPeerThread);

begin
with AThread.Connection do
begin
strRecv := CurrentReadBuffer; //读取的数据不含包尾 ''
writeLog(strRecv,True);
sIpClient:=AThread.Connection.Binding.PeerIP;
 
同意三楼说法,而且可以从AThread.从获得各个客户端的具体信息,比如ip等;

如果你要传输文件的话,建议用idtcpserver,而非idudpserver,这样不需要控制包顺序,编号等繁琐的东西,

还有,indy的性能在客户端达到一定数量后,会急剧下降的,要考虑这点(你客户端现在的最大数量)
 
不知道客户端一般到多大比较好
 
xushufa:能给详细一点吗?
 
自己顶上去
 
http://www.projectindy.org/DemoDownloads/Indy9Demos_26Oct04.zip
 
简单说明我要实现的具体功能:
一个server要跟5个Client(或许更多,不超过30个)传送文件
client1: a.txt;
client2: b.avi;
client3: c.avi;
Client4: d.asf;
Client5: b.avi;
....
大概就是这样,重送的文件不清楚,是由client端发送请求决定的
大概这样的流程要怎么写比较方便?
 
算了,用ftpserver+ftpclient 来传文件,用udp做简单的消息通知算了
 
//Indy的例子(ImageServer有文件传输的例子,Indy本身就是多线程的)
http://www.projectindy.org/DemoDownloads/Indy9Demos_26Oct04.zip
 
多人接受答案了。
 
后退
顶部