-
读 – 始终返回 -1
java中网络编程时很大┅部分代码在做各种fail时的处理了解各种异常发生时背后的逻辑才能正确地处理之。以上列举的只是连接关闭的异常还有其他各种异常沒有提及,以后有机会再补上
3. 怎么避免意外的RST?
针对几种出现RST的情况:
-
利用应用层协议定义结构化的数据双方对何时数据发送/接收完畢/可以安全关闭连接有明确一致的契约;
-
close之前消费掉数据;
-
需要在半关闭状态下读数据时,使用
shutdownOutput()
它会发送FIN但依然可以读取数据;等对方發送FIN,read()
返回-1后再调用close()
释放socket