DSTCPServerTransport.pas中的"procedure TDSTCPChannel.Open“方法在分配"FChannelInfo”时使用连接用户的私有IP地址。当我跟踪HTTP传输时,它使用了用户的公网IP。如果将DSTCPServerTransport.pas更新为
FChannelInfo := TDBXSocketChannelInfo.Create(Integer(FContext.Connection), FContext.Connection.Socket.Binding.IP);已更改为
FChannelInfo := TDBXSocketChannelInfo.Create(Integer(FContext.Connection), FContext.Connection.Socket.Binding.PeerIP);然后,DSTCPServerTransport.pas将匹配HTTP传输实现,并且连接的用户的公共IP地址也将通过用于TCP连接的"DSConnectEventObject.ChannelInfo.Info“在TDSServer.OnConnect事件中可用。几个开发人员在这两个EBT讨论中讨论了这一点:Discussion #1,Discussion #2。这里的QC#是#91030。
我试图自己进行更改,但了解到我不能重新编译DataSnap框架(see here)。
这会在XE2中修复吗?或者最终用户能够在XE2中重新编译DataSnap框架吗?在XE2之前,是否会有包含此修复的DataSnap补丁?
谢谢,詹姆斯
发布于 2011-07-27 06:13:43
我昨天给Embarcadero打了电话,他们确认已经修复了这个问题,并将在下一个通用版本(例如XE2)中提供。
https://stackoverflow.com/questions/6528739
复制相似问题