【发布时间】:2012-05-14 14:15:04
【问题描述】:
我想从通过 UDP 向我的电脑发送数据的电子设备读取数据。我在 Delphi 中编写了一个 UDP 服务器。 EIdSocketError 类中发生异常(失败 #10049)。这是我的代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
IdUDPServer1.Bindings.add.IP := '192.168.1.1'; //Electronic device ip
IdUDPServer1.Bindings.add.Port:= 49152; //Electronic device port
IdUDPServer1.OnUDPRead:= UDPRead;
IdUDPServer1.Active:=True;
end;
procedure TForm1.UDPRead (Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
bytes_received: integer;
begin
bytes_received:=AData.size;
end;
我做错了什么?
提前致谢
【问题讨论】:
-
我认为您需要将 IdUDPServer1.Bindings.add 的结果分配给一个变量,然后设置其 IP 和端口。如果我没记错的话,你正在做的是添加两个绑定,一个是 IP,一个是端口。
-
我把代码改了如下,但是还是一样的错误...我假设绑定的ip必须是电子设备的ip(不是PC的ip):var myaddress:TIdSocketHandle;开始我的地址:=IdUDPServer1.Bindings.Add;我的地址.IP:= '192.168.1.1';我的地址.端口:=49152; IdUDPServer1.Bindings.Add.IP:=myaddress.IP; IdUDPServer1.Bindings.Add.Port:=myaddress.Port;结束;
-
否,您可以使用绑定指定您在哪个以太网适配器上侦听 UDP 数据包。
-
我已将绑定 IP 地址更改为“0.0.0.0”(以及“127.0.0.1”),但我仍然没有收到来自外部设备的数据...代码?
-
请使用您正在使用的最新代码更新您的问题。