TCP 协议错综复杂, 很容易出现错误,错误码非常之多。这里探究一些在编程中比较常见的错误码。tcp 错误码 在不同的操作系统中的值不同。这里取用 Linux 与 Windows 两种,如 connection_refused 在windows 中的值为10054, 在 Linux 中为54 .
eof :
2: End of file
eof 标志着流的结束。当对端关闭连接(调用了 shutdown 或 close) 后,处于 CLOSE_WAIT 状态。 本端会收到 FIN, ACK 。此时如果本端再试图 read ,则会读到 eof
connection_refused
61: Connection refused10061: No connection could be made because the target machine actively refused it . 由于目标计算机积极拒绝,无法连接
在客户端试图与服务端建立连接的时候发生。一般是服务端没有处于监听状态。 客户端发送发 SYN , 但是收到了 RST, ACK
connection_reset
54: Connection reset by peer10054: An existing connection was forcibly closed by the remote host . 远程主机强迫关闭了一个现有的连接。
对端对处于连接状态的socket 进行了异常断开, 如进程中断等。此时如果本端进行读操作,可能会得到此错误。