【发布时间】:2014-12-09 23:40:06
【问题描述】:
我希望通过 TCP 套接字连接将 JPG 图像从客户端发送到服务器。我将文件转换为客户端中的字节数组,然后在发送数组长度后将其发送到服务器。服务器一次一个字节地从 socketinputstream 读取数据到一个新的字节数组,然后将其写入 jpg 文件。但是数据已损坏,无法查看此图像。下面是客户端和服务器的核心java代码。
客户:
Socket s = new Socket("localhost", 666);
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
String imgPath = "C:/Users/huehuehue/Documents/Uni/D0036D/prick1.JPG";
File file = new File(imgPath);
byte[] b = new byte[(int) file.length()];
FileInputStream fis = new FileInputStream(file);
fis.read(b);
fis.close();
dos.writeInt((int) file.length());
dos.flush();
dos.write(b, 0, b.length);
dos.flush();
服务器:
ServerSocket serverSocket = new ServerSocket(666);
Socket connect = serverSocket.accept();
DataInputStream dis = new DataInputStream(connect.getInputStream());
File file = new File("C:/Users/huehuehue/Documents/Uni/D0036D/PLAYERprick.JPG");
FileOutputStream fos = new FileOutputStream(file);
int arrlen = dis.readInt();
byte[] b = new byte[arrlen];
int i = 0;
for(i = 0; i < arrlen; i++) {
b[i] = dis.readByte();
i++;
}
fos.write(b, 0 , b.length);
我不明白为什么这不起作用,非常感谢任何帮助或建议。
【问题讨论】:
标签: java sockets file-io iostream bufferedimage