我现在客户端用delphi,服务器端用java进行连接,客户端用的是的是idpclient,在保证用udp的情况下,如何改进?
IdUDPClient1.Host:='127.0.0.1';
IdUDPClient1.Port:=6666;
IdUDPClient1.Active:=true;IdUDPClient1.Send('100:AAA');
GetRec:=IdUDPClient1.ReceiveString();
问题是:根据返回的值再进行处理,有可能在短时期内会收到的东西比较频繁,所以想有没有类似java的监听,或者是多线程socket的话,如何处理?

解决方案 »

  1.   

    自己写有点啰嗦,若真要深入你找找socket开发相关的资料看看。
    有一本水利出版社的书《Delphi深度编程及其项目应用开发》有一章节专门说这块的,你找找看。
      

  2.   

    自己写有点啰嗦,若真要深入你找找socket开发相关的资料看看。
    有一本水利出版社的书《Delphi深度编程及其项目应用开发》有一章节专门说这块的,你找找看。
      

  3.   

    谢谢,我会看得。因为我现在用的是timer隔一段时间接受一次,效果非常不好,类似于死机状态。希望有好的解决方式
      

  4.   

    在Timer事件里加上 如下这句:    while (not nextFlag) do  //等待通讯完成
          Application.ProcessMessages;    
    nextFlag需要你自己定义
      

  5.   

    自己创建一个线程类,把监听的代码放在线程的Execute里执行
      

  6.   

    可惜我对多线程不是很了解,现在我改用udpserver了,他有onudpread事件,暂时解决了问题。谁能给写个小例子啊,不胜感激。
      

  7.   

    不用多线程,用两个udpsocket ,一个是client,发送数据,一个是server,server用于监听接收(onreceive事件)就可以了。千万不要使用timer,导致你的cpu死掉。
    另外server要有超时控制,不能无限制的等。
      

  8.   

    另外不要用indy的控件,bug比较多。用udpsocket比较好,稳定
      

  9.   

    楼主用多线程做不就行了吗?
    用java做服务器是不是很好?
    怎么个解决方案?
      

  10.   

    delphi的多线程不太会用,至于选择java作服务器是要求的,客户端传送的是bytes,服务器端再接受,现在试验没问题
      

  11.   

    不用timer的话,那么怎么设置超时呢?