2015-09-25 72 views
1

我试图连接到SSL TCP服务器,它在我的浏览器上工作,我可以收到硬编码的响应。在应用程序中,使用ReadLine函数时会发生异常。无法读取流(sslStream)

Error: System.ArgumentException: Cannot read the stream on System.IO.StreamReader..ctor(Stream stream, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean leaveOpen) on System.IO.StreamReader..ctor(Stream stream) on App_Name.Program.Connection.Connect(String serverIp, Int32 serverPort, ConnectionInfo connectionInfo)

tcpClient = new TcpClient(serverIp, serverPort); 
sslStream = new SslStream(tcpClient.GetStream(), false, new RemoteCertificateValidationCallback(TrustAllCertificatesCallback)); 

streamReader = new StreamReader(sslStream); 
streamWriter = new StreamWriter(sslStream); 

string inputLine; 

while ((inputLine = streamReader.ReadLine()) != null) 
{ 
    ParseMessage(streamWriter, serverIp, inputLine); 
} 
+0

任何类型的防火墙限制或其他访问限制,你可以想到这会在你的环境中造成这种限制吗? – Igor

+0

您是否在某处设置了['ServicePointManager.SecurityProtocol'](https://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.securityprotocol(v = vs.110).aspx)? – rene

+0

@rene不,这是除证书验证外的整个代码。 – Kenny

回答

1

此线具有低于连接功能被添加到正确初始化handsake。

sslStream.AuthenticateAsClient(serverIp); 
+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – Sender

+0

@Sender抱歉,这是我的问题,但我添加了解释,谢谢。 – Kenny