我在尝试使用 TIdUDPServer 的 OnUDPRead 事件读取从我创建的 IdUDPClient 客户端发送的广播数据时遇到问题。我尝试使用以下问题中显示的示例,但无济于事。
我能够将 TIdUDPServer 绑定到我指定的端口:
procedure TForm1.Button1Click(Sender: TObject);
begin
IdUDPServer1.BroadcastEnabled := True;
IdUDPServer1.DefaultPort := StrToInt(edit2.Text);
IdUDPServer1.Bindings.Add.IP := '0.0.0.0';
//IdUDPServer1.ThreadedEvent:=True;
IdUDPServer1.Active := True;
end;
IdUDPServer1UDPRead 成功触发,表明 UDP 服务器正在工作,但我在这一行出现异常 -> DataStringStream.CopyFrom(AData, AData.Size);
例外:模块“IndyUDPReceiver.exe”中地址 004BA415 的访问冲突。读取地址 74736574
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject;
AData: TStream; ABinding: TIdSocketHandle);
var
DataStringStream: TStringStream;
msg: string;
begin
try
DataStringStream := TStringStream.Create('');
try
DataStringStream.CopyFrom(AData, AData.Size);
msg := DataStringStream.DataString;
Memo1.Lines.Add(msg);
finally
DataStringStream.Free;
end;
except
on E: Exception do
begin
Memo1.Lines.Add('Exception:' + E.Message);
DataStringStream.Free;
end;
end;
end;
我已将完整的客户端和服务器上传到:http ://www.2shared.com/file/5SRweGIa/Indy_UDP.html
感谢任何指针。:)