【发布时间】:2011-07-11 21:42:05
【问题描述】:
我第一次使用 Socket.Send(byte[] data) 时它不会抛出异常,即使远程主机可能很久以前就关闭了连接。它只会在第二次尝试发送数据时抛出异常。
我进行了检查,该方法确实返回了正确的发送字节数。我还使用了带有 out SocketError 参数的重载。这包含调用后的 SocketError.Success。
为什么套接字在第一次调用时不抛出异常,而只在第二次调用时抛出异常。
【问题讨论】:
我第一次使用 Socket.Send(byte[] data) 时它不会抛出异常,即使远程主机可能很久以前就关闭了连接。它只会在第二次尝试发送数据时抛出异常。
我进行了检查,该方法确实返回了正确的发送字节数。我还使用了带有 out SocketError 参数的重载。这包含调用后的 SocketError.Success。
为什么套接字在第一次调用时不抛出异常,而只在第二次调用时抛出异常。
【问题讨论】:
当数据已发送到本地 TCP/IP 堆栈时,“发送”操作被视为完成。不保证数据已经到达远端。
【讨论】: