请教 Indy 的 UdpServer 控件?(200分)

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

loster2003

Unregistered / Unconfirmed
GUEST, unregistred user!
有几个问题:
1、还是关于前两天提出的问题:http://www.delphibbs.com/delphibbs/dispq.asp?lid=3398131 定时发送一个请求的确可以解决,而且隔的时间长了还不行(60秒合理一些),可是每隔一分种发送一次请求岂非会让服务器很忙,2000多个用户,还要处理其它事情吗?
2、调用 SendBuffer 如何知道是否发送失败呢?有时服务器程序会莫名其妙自动退出,我怀疑是不是发送数据的时候出了问题?如何检测数据是否发送成功呢
3、经检查,有些用户经过NAPT后在服务端的IP地址及端口显示很不合理。例如:
有部分用户是属于一个公司的,通过一条线路共享上网,连接到服务器端看到数据为
用户名    IP地址       端口号
0001     59.42.10.11     5001
0002     59.42.10.11     39293
0003     59.42.10.11     8030
0004     59.42.10.11     5001
0001用户和0004用户的端口是一样的,显然是有问题
 
服务器分布式
 
2. 肯定需要验证, 如果服务器收到,回复一个验证码给客户端,如果客户端收不到验证码,重发。
代码:
procedure TfmSendFileExe.SendPacket(pack: TPackInfo);
function cfSend: boolean;
var
pki: TPackInfo;
rPk: TPackInfo;
begin
result := false;
pki := pack;
pki.id := pkId;
TcpClient.WriteBuffer(pki, pkSize);
try
TcpClient.ReadBuffer(rPk, pkSize);
except
exit;
end;
if rPk.id = pki.id then result := true;
end;
begin
repeat until cfSend;
inc(pkId);
end;
 
后退
顶部