[英]Socket connection in java 8 springboot server
我们有一个使用Java 6构建的旧应用程序。它使用DataInputStream和DataOutputStream通过套接字进行通信。
//要写入流的代码段
public void writeMessage(DataOutputStream out) throws IOException {
int pageSize = 10;
logger.info("pageSize: " + pageSize);
out.writeInt(pageSize);
}
//要从流中读取的代码段
public void readMessage(DataInputStream in) throws IOException {
int pageSize = in.readInt();
logger.info("pageSize: " + pageSize);
}
它曾经在jboss中作为应用服务器运行,而postgres作为数据库运行。 现在,我们已将应用程序迁移到springboot。 它使用嵌入式tomcat服务器和相同的postgres DB。
代码没有从流中正确读取。 调用in.readInt()
时出现java.io.EOFException
注意:我们使用SSL / TLSv1,并且已正确设置证书和密钥库。 建立套接字连接和写入流时也没有例外。 另外,所有流/套接字连接均已正确关闭,并且相同的代码在jboss服务器中工作正常。
编辑:我尝试只使用InputStream
或BufferedInputStream
而不是DataInputStream
,结果更加令人困惑。
假设我向流发送了20个字节:使用inputStream.read
只能读取1个字节,并且它会过早到达EOF。 使用bufferedInputStream.read
,读取19个字节,而丢失1个字节。
我正在使用inputStream或bufferedInputStream,而不是一个接一个。
请让我知道我是否会丢失一些东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.