我遇到了一个奇怪的错误。以下代码始终抛出异常(System.ArgumentException“Stream was not writable
”):
TcpClient socket = new TcpClient();
socket.Connect("serverIp", serverPort);
//wrap networkstream with ssl
SslStream sslStream = new SslStream(socket.GetStream(),false);
stream.ReadTimeout = 5000;
stream.WriteTimeout = 5000;
//following line throws System.ArgumentException "Stream was not writable"
var writer = new BinaryWriter(sslStream);
writer.Write(abMessage, nStart, nLength);
writer.Flush();
“sslStream
”对象 canWrite
和 canRead
属性始终为“false
”。
显然,我已经在 Google 上搜索过,并在许多论坛中进行了搜索,但是,我总是发现相同的代码对我不起作用。
如何修复此异常?
最佳答案
创建 SslStream
(在 TcpClient
之上)后,您应该与 ssl 连接握手。为此,您将使用 SslStream
类型中可用的一些方法:
AuthenticateAsClient
(多次重载)AuthenticateAsServer
(多次重载)
(或者它们的异步变体BeginAuthenticateAs...
)
如果不使用此握手方法,SslStream
并未真正设置,您将无法从网络流读取或写入。
使用哪种方法(AuthenticateAsClient
或 AuthenticateAsServer
)特定于您的实现以及 SSL 流的所需用法。
关于c# - SslStream错误: Stream was not writable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25297300/