我编写了一个客户端应用程序来与第三方服务器应用程序通信。它的通信是通过使用 SslStream 类的 SSL 的自定义端口进行的。
服务器允许永久连接,但是我发现我必须在 60 秒内使用命令 ping 服务器以保持合理的响应水平。60 秒后,通讯仍然有效,但收到响应时有明显延迟。它不会断开连接并重新连接。只是比平时需要更长的时间。在 60 秒内发送另一个命令又快了。60 秒后发送另一个命令会导致延迟。
就好像 60 秒后,SslStream 与服务器重新协商,使传输时间加倍。我知道 SSL 是基于会话的,这可能是原因吗?除了向服务器应用程序发送不必要的命令以使其保持活动状态之外,我能做些什么吗?
我的代码如下(截断):
var client = new TcpClient();
client.NoDelay = true;
client.Connect("111.111.111.111", 6969);
var sslStream = new SslStream(client.GetStream(), true, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
sslStream.AuthenticateAsClient("111.111.111.111");
...
// The following method is invoked by the RemoteCertificateValidationDelegate.
private bool ValidateServerCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors policyErrors)
{
if (policyErrors == SslPolicyErrors.None)
return true;
else
return false;
}
希望有人可以对此有所了解!
我的客户端应用程序是用以下语言编写的:C# / .NET 2.0 & 4.0 托管在 Windows 2003 和 2008 上
谢谢