2015-04-02 38 views
0

AbstractByteArraySerializer爲什麼我們需要這種方法?TCP適配器在春季集成檢查closu

protected void checkClosure(int bite) throws IOException { 
    if (bite < 0) { 
     logger.debug("Socket closed during message assembly"); 
     throw new IOException("Socket closed during message assembly"); 
    } 
} 

回答

0

當問這樣的問題,它通常是最好的解釋,爲什麼你問它 - 就像你遇到你想了解一些問題。

TCP是一種流媒體協議;我們需要一些方法來從流中分隔消息,例如CRLF;這就是(de)序列化器所做的事情 - 序列化器爲流添加結構,反序列化器解碼來自流的消息。

我們需要檢測客戶端在收到完整的消息之前是否關閉套接字。

如果您希望客戶端通過關閉套接字來發信號結束,那麼您可以使用ByteArrayRawSerializer

+0

對不起。我試圖看到,這是我的理解是正確與否。這似乎是我正確的。謝謝你,加里。原因是,我們不斷收到套接字消息彙編異常。然而,它已被部署到兩個不同的環境中的應用程序。在一個環境中,我遇到了這個問題,但另一方面我不是。我可以在客戶端驗證或驗證套接字是否關閉。我已經使用ByteArrayRawSerializer&我沒有看到異常bt,只要我將接收到的字節轉換爲字符串,我們看到非人類可讀格式的怪異字符。 – user2279564 2015-04-03 14:30:18

+0

追蹤這樣的間歇性問題真的很難;您可能需要使用wireshark等網絡監視器來查看線路上的數據包。 – 2015-04-03 14:53:47

+0

我已經使用wireshark。我有截圖。我可以在這裏附上嗎? – user2279564 2015-04-03 16:26:58