永发信息网

IdUDPClient 控件怎么接收数据的

答案:2  悬赏:30  手机版
解决时间 2021-01-30 21:09
  • 提问者网友:回忆在搜索
  • 2021-01-30 00:07
IdUDPClient 控件怎么接收数据的
最佳答案
  • 五星知识达人网友:孤老序
  • 2021-01-30 00:32
实在想用可以在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;
全部回答
  • 1楼网友:大漠
  • 2021-01-30 02:08
一般来说不会这样子,所以你最好贴出代码来 你这样发送肯定会收到好几个啊,你这样子实际上会被转换成 sendto('255.255.255.255', 22222, data)这样发送的,正如billswhot所说,这样一个那样一个,会收好几次,我有两个网段,这样发送我会收4次. idudpserver1.broadcast(s2,22222,'127.0.0.1');这样你就只收到一个了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯