我有一個在Java中的TCP服務器應用程序。當客戶端連接時,它會嘗試從連接中讀取數據包。但是,即使客戶端沒有發送任何內容,它也會讀取。我得到的是由0初始化的字節數。我期望套接字等待,並最終超時,直到有數據到達。但是,相反,它表現得很奇怪。
這是怎麼回事,我該如何解決它?
以下是我從套接字讀取:爪哇套接字行爲奇怪
byte bytes[] = new byte[25];
socket.getInputStream().read(commandBytes);
我有一個在Java中的TCP服務器應用程序。當客戶端連接時,它會嘗試從連接中讀取數據包。但是,即使客戶端沒有發送任何內容,它也會讀取。我得到的是由0初始化的字節數。我期望套接字等待,並最終超時,直到有數據到達。但是,相反,它表現得很奇怪。
這是怎麼回事,我該如何解決它?
以下是我從套接字讀取:爪哇套接字行爲奇怪
byte bytes[] = new byte[25];
socket.getInputStream().read(commandBytes);
我得到的是阿雷由0
初始化的字節你得到的是一個回報來自read()
方法的值,告訴您讀取了多少個字節,或者-1表示流的結束,即對等關閉了連接。由於你忽略了這個值,你的代碼是不正確的。
我希望套接字等待,並最終超時,直到有一些數據來。
由於您沒有設置超時,所以不會超時:它會阻塞,直到數據到達或流結束髮生。
但是,相反,它表現得很奇怪。
沒有什麼奇怪的,除了你的期望。
我們可以看到代碼嗎? – Dima 2014-12-07 15:22:23
當然。看我的帖子。 – Pavol 2014-12-07 15:34:16