2

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 讨论中讨论了这一点:讨论 #1讨论 #2。QC# 是#91030。

我尝试自己进行更改,但了解到我无法重新编译 DataSnap 框架(请参阅此处)。

这会在 XE2 中修复和/或最终用户能否在 XE2 中重新编译 DataSnap 框架?XE2 之前是否会有包含此修复的 DataSnap 补丁?

谢谢,詹姆斯

4

1 回答 1

0

我昨天就此事打电话给 Embarcadero,他们确认它已被修复,并将在下一个通用版本(例如 XE2)中提供。

于 2011-07-26T22:13:43.463 回答