使用TIDUDPServer控件接收数据,用socket调试工具发送数据,一帧262字节,一起发送40帧,TIDUDPServer没有全部收到,每次只能收到35帧左右,TIDUDPServer的buffersize设为16384,不知怎么回事,请高手指教,谢谢

解决方案 »

  1.   

    UDP本来就不保证能全部收到,如果要保证全部收到,用TCP。或者可以试试慢点发。
      

  2.   

    UDP是有丢包,关键是发送和接收方的交流机制要写好。
      

  3.   

    现在先不考虑发送和接收做交流,只针对接收,数据量大了,是不是一定会丢,用wireshark抓包的话基本都能抓到,但TIDUDPServer控件就是不能完成一次
    代码也不用什么,就是在接收函数里计个数,
    procedure TfrmMain.UDPServerPBXUDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
    var
      iCnt, i: Integer;
    //  sStr: string;
    begin
      inc(gCount);
    //...
    end;showmessage(inttostr(gCount));
    收不全,是不是用其他的控件会好点,或者自己写socket,怎么写,我不是很清楚