现在它是终端之间发送的图像。客户端将图片转换为字节流,然后分发到服务器。服务器发现发送人并将数据发送到终端。现在在局域网的两站模拟器中发送大图。 发送和接收没有问题。部署到网络服务器的服务器接收代码。
int length = 0;
int totalNum = 0;
byte[] buffer = new byte[1024];
while ((length = dis.readInt()) != 0) {
length = dis.read(buffer, 0, length);
System.out.println("length :-------->" + length);
totalNum += length;
out.writeInt(length);
out.write(buffer, 0, length);
out.flush();
}
System.out.println("totalNum:-------->" + totalNum);
out.writeInt(0);
out.flush();
Debug.info("totalNum::::" + totalNum);
initService.getEnterpriseMsgService().save(msg);
每次接收1024个字节。有时到System.out.println("length :-------->" + length);
它为空。仿真器每次发送和接收数据都是一致的。当我发大图时,它没有问题。我不知道是关于代码还是服务器问题。
要求解决方案。提前致谢。
答案 0 :(得分:0)
如果发送和接收图像。您必须增加缓冲区大小
byte[] buffer = new byte[4096];
答案 1 :(得分:0)
为什么不试试这种方式:
InputStream is //your InputStream
OutputStream out //your OutputStream
byte[] buffer = new byte[1024];
int length = 0;
try {
while ((length = is.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
} catch (Exception e) {
// TODO: handle exception
}