我有一个使用-XE和Zlib过滤器的tcp/ip数据午休PC1服务器
在客户机上,这两个过滤器都是在DataSnap TSqlConnection中定义的。
当客户端连接到服务器时,我得到一个“连接优雅关闭”错误消息。
如果我只单独使用PC1过滤器,就没有问题了。
如果我只使用Zlib过滤器,那么就没有问题了。
关于如何使两个过滤器同时工作,有什么想法吗?
发布于 2011-02-18 07:52:40
您还需要在客户端应用程序中部署libeay32.dll和ssleay32.dll。
引用我的Delphi开发课件手册:
“如果使用TCP/IP以及RSA和PC1筛选器部署PC1独立服务器,那么还必须部署两个特定于Indy的SSL DLL: libeay32.dll和ssleay32.dll --或者确保它们已经存在于服务器机器上。这些DLL是RSA过滤器(加密PC1过滤器使用的密码)所需的。如果没有这两个DLL,任何想连接到服务器的客户端都会得到一个”连接关闭“消息,因为服务器无法加载两个DLL来启动RSA过滤器来加密PC1密钥,等等。
顺便说一下,任何DataSnap客户端都需要相同的两个DLL,无论是使用RSA和PC1过滤器连接到TCP/IP服务器,还是使用HTTPS连接到ISAPI过滤器。“
格罗杰斯,鲍勃·斯沃特
发布于 2011-02-21 10:13:28
这可能是DataSnap中的一个bug。我也有同样的问题,这是QC报告。http://qc.embarcadero.com/wc/qcmain.aspx?d=91180
投票确定QC报告,等待德尔菲-XE的更新.
编辑1一个疯狂的想法,不要在客户端上指定过滤器。
这是Pawel Glowacki关于传输过滤器的一篇论文。http://edn.embarcadero.com/article/41293,他特别提到应该将ZLibCompression添加到客户端DataSnap驱动程序的Filters属性中。
我已经测试过不这样做,而且效果很好。您必须将DBXCompressionFilter添加到uses子句,否则就会出现"ZLibCompression未注册“错误。
由于服务器上有PC1和ZLibCompression,而客户机上没有过滤器,所有的接缝都会按预期的方式工作。我检查了流量,并对其进行加密和压缩。
在Embarcadero的人确认这是我应该做的事情之前,我会三思而后行。
编辑2这里是讨论论坛上的一篇文章,它说足够来在服务器上添加过滤器。不是Embarcadero直接而是非常接近:) https://forums.embarcadero.com/thread.jspa?threadID=48875&tstart=0
发布于 2011-03-18 19:17:50
,直到Embarcadero的人确认这是应该的方式,我在使用它之前会三思而后行。
这是真的。如果您没有在客户端上指定过滤器,则在连接期间在初始握手协议中告知服务器的过滤器是什么,然后自动添加它们。这是一种完全合理和安全的使用过滤器的方法。
但是,请注意,相反的情况并不是这样。服务器不采用来自连接客户端的过滤器。如果客户端上有RSA过滤器,而服务器上没有匹配的RSA过滤器,那么连接上就会有异常,也就是说服务器没有匹配的RSA过滤器。客户端上的任何其他筛选器(而不是服务器上的)都将被忽略。
https://stackoverflow.com/questions/5035085
复制相似问题