我面临一个奇怪的错误。以下代码总是抛出异常(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
'。
显然,我已经谷歌搜索,并在许多论坛搜索,但是,我总是发现相同的代码不适合我。
如何修复此异常?
答案 0 :(得分:3)
创建SslStream
(在TcpClient
之上)后,您应该握手ssl连接。为此,您将使用SslStream
类型中提供的一些方法:
AuthenticateAsClient
(多次重载)AuthenticateAsServer
(多次重载)(或他们的异步变体BeginAuthenticateAs...
)
如果不使用此握手方法,SslStream
并未真正设置,您将无法读取或写入网络流。
使用哪种方法(AuthenticateAsClient
或AuthenticateAsServer
)特定于您的实施和SSL流的所需用途。