我用IdUDPClient和IdUDPServer编写网络通信程序,为什么出现延迟现象?我的设计思路是在客户段发出消息后,服务器端对数据库进行操作,然后将结果返回客户端。结果出现我点击4次发送按钮后,才得到回应消息,此时对数据库已经进行了两次操作。该怎么解决?

解决方案 »

  1.   

    一般情况下,在发送数据后,首先将Btn。Enabled设置成False,如果有消息回复,则Btn.Enabled设置为True。或者TimeOut。在TimeOut后需要进行检测是否数据库已经进行了设置。
    出现数据延迟的原因我估计是Server端对数据库处理的时间太久。你可以进行验证一下,在server端,这么写:收到消息后:
    var
      i,j: integer;
    begin
      i:=GetTickCount;
      // do you job
      j:=GetTickCount;
      showmessage(Inttostr(j-i));
      // send udp back
    end;
    看看时间究竟有多长。