Bra*_*rke 3 c# sockets networking tcpclient
我有一个简单的程序,它使用TcpClient和SslStream将数据写入套接字.
为了测试它我运行程序过夜,所以我的程序将打开连接,很长一段时间没有写任何东西,所以防火墙或远程服务器将关闭连接.今天早上我看了一下TCPView并验证连接已关闭,然后告诉我的程序写入套接字.
Write没有抛出任何异常.但是,下一个Write确实按预期抛出了此异常:"System.IO.IOException:无法将数据写入传输连接:远程主机强制关闭现有连接"
我可以看到为什么TcpClient.Connected可以返回True,即使它确实没有连接,但是为什么Write不会在实际关闭的连接上抛出异常(在TCPView中验证)?
这是因为TCP/IP协议的工作方式.当您调用TcpClient.Write时,数据将被发送到服务器,并且该函数返回成功而不等待服务器响应.
与此同时,服务器返回错误.您身边的Tcp/IP堆栈会注意到,下次尝试编写它时会抛出异常
| 归档时间: |
|
| 查看次数: |
2117 次 |
| 最近记录: |