c# - SslStream错误: Stream was not writable

标签 c# ssl argumentexception sslstream

我遇到了一个奇怪的错误。以下代码始终抛出异常(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”对象 canWritecanRead 属性始终为“false”。

显然,我已经在 Google 上搜索过,并在许多论坛中进行了搜索,但是,我总是发现相同的代码对我不起作用。

如何修复此异常?

最佳答案

创建 SslStream(在 TcpClient 之上)后,您应该与 ssl 连接握手。为此,您将使用 SslStream 类型中可用的一些方法:

  • AuthenticateAsClient(多次重载)
  • AuthenticateAsServer(多次重载)

(或者它们的异步变体BeginAuthenticateAs...)

如果不使用此握手方法,SslStream 并未真正设置,您将无法从网络流读取或写入。

使用哪种方法(AuthenticateAsClientAuthenticateAsServer)特定于您的实现以及 SSL 流的所需用法。

关于c# - SslStream错误: Stream was not writable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25297300/

相关文章:

oracle - 节点 odbc SSL 支持

c# - 为什么我不能这样做 : dynamic x = new ExpandoObject { Foo = 12, Bar = "twelve"}

c# - 连接字符串中临时路径中的 SQLCe 本地数据库?

c# - 使用 C# 解析 XML

ssl - 使用私钥解密 SSL

c# - "Parameter not valid"加载System.Drawing.Image异常

c# - 等待任务完成

ssl - RSA公钥指纹

javascript - 为什么 Sharepoint 的 get_current() 方法的可用性不一致?

c# - 使用 InvokeApiAsync () 传递参数时出现 System.ArgumentException