错误:流不可写
本文关键字:错误 | 更新日期: 2023-09-27 18:17:50
我遇到一个奇怪的错误。下面的代码总是抛出异常(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
'。
显然,我已经谷歌,并在许多论坛搜索,但是,我总是发现相同的代码不适合我。
如何修复这个异常?
一旦您创建了SslStream
(在TcpClient
之上),您应该握手ssl连接。为此,您将使用SslStream
类型中可用的一些方法:
-
AuthenticateAsClient
(几个过载) -
AuthenticateAsServer
(几个过载)
(或它们的异步变体BeginAuthenticateAs...
)
如果不使用这个握手方法,SslStream
并没有真正设置好,你将无法从网络流中读写。
使用哪种方法(AuthenticateAsClient
或AuthenticateAsServer
)是特定于您的实现和SSL流的期望用法。