【发布时间】:2016-10-27 02:59:37
【问题描述】:
Java:1.7 操作系统:Linux(但我不知道是哪个Linux)
我有一个 CharBuffer 来包含我从套接字的 BufferedReader 读取的内容。 Socket 是肯定建立的,当我尝试转储它时,它给了我一个 ERROR_FORMAT 结果。
之后,我从套接字读取数据,但导致 java.net.SocketException: Connection reset
Connection reset 问题是我要解决的问题,但是 CharBuffer.toString() 怎么会给出 ERROR_FORMAT 结果呢?
下面是我的代码,有什么问题吗?
Socket connectionSocket=xxxxxx; //Connected socket given by other library
connectionSocket.setSoTimeout(75*1000);
CharBuffer charBuffer=CharBuffer.allocate(1024);
BufferedReader bufferedReader=null;
bufferedReader=new BufferedReader(new InputStreamReader(connectionSocket.getInputStream(), "BIG5"));
while((bufferedReader.read(charBuffer))!=-1) // in 2nd time, this line throw a java.net.SocketException: Connection reset
{
charBuffer.flip();
respStr.append(charBuffer);
log.info("CharBuffer: "+charBuffer.toString()); // this line runs just 1 tine, print result: "CharBuffer: 2016102618353211301 : ERROR_FORMAT"
charBuffer.clear();
}
log.info("CharBuffer all: "+charBuffer.toString()); // dodn't been execute
【问题讨论】:
-
数据流中的字符可能不在 BMP 上,这可能会导致问题。我建议您将原始数据放在 ByteArraryInputStream 中,而不是使用套接字,直到您找出问题所在。
-
什么是 BMP?
标签: java sockets connection-reset charbuffer