不同内网间的UDP通讯?
客户端C的内网IP及通讯端口为192.168.1.5:7000,对应的经路由NAT后变为220.120.123.42:15000;
服务器S的内网IP及通讯端口为192.168.1.150:9119,对应的路由公网IP为113.93.159.242,已经在路由上做了端口映射。
现在C知道S的公网IP及端口113.93.159.242:9119后,向其发送数据,S能收到C的数据,通过函数function TCustomWSocket.ReceiveFrom(
Buffer : Pointer;
BufferSize : Integer;
var From : TSockAddr;
var FromLen : Integer) : integer;知道了C的IP和端口为220.120.123.42:15000;然后向C发送确认数据包,但C却收不到任何数据。
此程序我在同一内网中测试时完全正常的。请教大虾们该如何解决呢?
[解决办法]
ProcessDeviceUDPData(PeerIP,PeerPort,@Buffer,Len)
改为 ProcessDeviceUDPData(DeviceUDPServer,PeerIP,PeerPort,@Buffer,Len)
发送信息回客户端 用DeviceUDPServer 不用另外创建新的
DeviceUDPServer.Send(PeerIP,PeerPort,Dest,DestLen);//因该有类似的发送函数吧?