• Delphi 7 中使用IdUDPServer1和IdUDPClient1控件实现通信检测


    Delphi 7 中使用IdUDPServer1和IdUDPClient1控件实现通信,可是如何检测两台电脑已经连通了?代码怎么写啊?求大神

    D7确实经典,但已经落伍了,用xe版本吧

    udp发送这个东西不检测是否通不通,用TCP连接可以检测;
    实在想用可以在server发送一个字符串,client接受到以后,反馈一个什么的字符串,表示正常通讯了

    在Client端:
    procedure TUDPMainForm.SendButtonClick(Sender: TObject);
    var
    MessageID: Integer;
    ThisMessage: String;
    ReceivedString: String;
    begin
    MessageID := Random(MAXINT);
    ThisMessage := 'Message: ' + IntToStr(MessageID);
    UDPMemo.Lines.Add('Sending ' + ThisMessage);
    UDPClient.Send(ThisMessage);
    ReceivedString := UDPClient.ReceiveString(); //该方法取得由服务端返回的信息。
    if ReceivedString = '' then
    UDPMemo.Lines.Add('No response received from the server after ' + IntToStr(UDPClient.ReceiveTimeout) + ' millseconds.')
    else
    UDPMemo.Lines.Add('Received: ' + ReceivedString)
    end;

    Server端:

    procedure TUDPMainForm.UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
    var
    DataStringStream: TStringStream;
    s: String;
    begin
    DataStringStream := TStringStream.Create('');
    try
    DataStringStream.CopyFrom(AData, AData.Size);
    UDPMemo.Lines.Add('Received "' + DataStringStream.DataString + '" from ' + ABinding.PeerIP + ' on port ' + IntToStr(ABinding.PeerPort));
    s := 'Replied from ' + UDPServer.LocalName + ' to "' + DataStringStream.DataString + '"';
    ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, s[1], Length(s));
    finally
    DataStringStream.Free;
    end;
  • 相关阅读:
    刷新界面
    分页加载数据(每次10条内容)的简单计算
    Intent传输包含对象的List集合
    android定时更新文件
    java中byte数据转换为c#的byte数据
    java zip文件的解压缩(支持中文文件名)
    Redis PHP扩展安装步骤
    CentOS6.5 开机启动自动运行redis服务
    centos7.2挂载硬盘攻略
    探究:Adobe Premiere Pro CC 2018 导入SRT字幕显示不全问题
  • 原文地址:https://www.cnblogs.com/jiangxm/p/6307002.html
Copyright © 2020-2023  润新知