Android套接字发送大图像并丢失数据

时间:2012-12-24 08:12:15

标签: android send image

现在它是终端之间发送的图像。客户端将图片转换为字节流,然后分发到服务器。服务器发现发送人并将数据发送到终端。现在在局域网的两站模拟器中发送大图。 发送和接收没有问题。部署到网络服务器的服务器接收代码。

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);它为空。仿真器每次发送和接收数据都是一致的。当我发大图时,它没有问题。我不知道是关于代码还是服务器问题。

要求解决方案。提前致谢。

2 个答案:

答案 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
}