上面這段代碼,是最常用的的socket 發送方式,對於一般的socket鏈接都適用。但是在這里跟銀行聯調時一直報了一個錯:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:196)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at java.net.SocketInputStream.read(SocketInputStream.java:108)
經查閱問題描述如下:
1,如果一端的Socket被關閉(或主動關閉,或因為異常退出而 引起的關閉),另一端仍發送數據,發送的第一個數據包引發該異常(Connect reset by peer)。
2,一端退出,但退出時並未關閉該連接,另一端如果在從連接中讀數據則拋出該異常(Connection reset)。簡單的說就是在連接斷開后的讀和寫操作引起的。
我這里是客戶端,socket最后關閉,原因只能是2。說明對方在把數據返回后,就把socket關閉了,而客戶端還在讀數據。所有檢查了下服務器的代碼,是發送反饋的資源未關閉。