【急】UDP简单应用,在线等待,利马揭帖 ( 积分: 100 )

  • 主题发起人 主题发起人 lzy6204
  • 开始时间 开始时间
L

lzy6204

Unregistered / Unconfirmed
GUEST, unregistred user!
实现要求:
【服务端】:安装了一个简单服务程序,用于接收客户端发送的信息,并返回一个结果串。
procedure TUDPMainForm.UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
DataStringStream: TStringStream;
s: string;
begin
s:='BBB';
DataStringStream := TStringStream.Create('');
try
DataStringStream.CopyFrom(AData, AData.Size);
if DataStringStream.DataString = 'AAA' then
ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, s[1], Length(s));
finally
DataStringStream.Free;
end;
end;
【客户端】:向服务器发送一个请求消息,并接收服务端的返回结果。
with FUDPClient do
begin
Send('AAA');
sRecive := Trim(ReceiveString());
end;


【问题】:假如客户端比较少,而且操作不频繁,现在的程序没有任何问题
但是一旦客户端增多,而且操作非常频繁(客户端同时给服务端发消息的几率大大增加)
这个时候问题就来了,经常接收不了数据。

请问:
1.使用UDP通信是否有客户端数量和连接数的限制?
2.如果很多客户端同时发消息给服务端,服务端的相应会不会出现问题? 采用多线程是否能解决此问题

如果客户端确实是因为同步操作问题而接收不到数据,那么这样的问题如何解决或者说如何避免,请有相关经验的朋友帮忙解答一下,谢谢了!
 
帮顶的也有分啊,问题是在很急,因为做测试的时候条件不足,客户端有限
我一人测试的时候不会出现任何的问题
 
为什么我的问题总是没有人回答,连一个回复都没有,哪怕顶一下也好啊
 
没有用过UDP的,,,不过要是这个IdUDPServer1Status每次都能执行的话..可以...在这建线程...就是说如TCP每个连接建一个线程...
 
建议用TCP.
会不会是在BINDING.ADD里加啊.....试下
 
谢谢各位,尝试一下tcp
 
接受答案了.
 
后退
顶部