• 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;
  • 相关阅读:
    python mymsql sqlalchemy
    python中 wraps 的作用
    python Subprocess的使用
    实现一个命令分发器
    实现一个cache装饰器,实现过期可清除功能
    求2个字符串的最长公共子串
    Base64编码,解码的实现
    把一个字典扁平化
    hihocoder1415 重复旋律3
    hihocoder 1407 重复旋律2
  • 原文地址:https://www.cnblogs.com/jiangxm/p/6307002.html
Copyright © 2020-2023  润新知