2 qq 38423382 qq_38423382 于 2018.01.29 09:55 提问

java用socket传图片,结束时有问题

图片说明
这是客户端,一直到不了设置断点那个地方图片说明这是图片发送端

4个回答

qq_38074369
qq_38074369   2018.01.29 10:09
已采纳

输入流read是堵塞线程的,而socket的流并没有结束标记,所以你用-1的标记是无法识别的,只会一直堵塞,可以参考https://github.com/wkp111/SocketSimple

whb3299065
whb3299065   2018.01.29 10:06

断点到哪步下不去了,执行到哪里不能继续执行了,有报错吗

morgerton
morgerton   2018.01.29 18:10

楼上说的对,读完了返回值不是-1,你这样就是一直在重复的读取这个文件的前1024个字节。

u013772876
u013772876   2018.02.06 11:16

public static void receiveFile(Socket socket) {

byte[] inputByte = null;

int length = 0;

DataInputStream dis = null;

FileOutputStream fos = null;

try {

try {

dis = new DataInputStream(socket.getInputStream());

fos = new FileOutputStream(new File("E:\img22.jpg"));

inputByte = new byte[1024 * 4];

System.out.println("开始接收数据...");

while ((length = dis.read(inputByte, 0, inputByte.length)) > 0) {

fos.write(inputByte, 0, length);

fos.flush();

}

System.out.println("完成接收");

} finally {

if (fos != null)

fos.close();

if (dis != null)

dis.close();

if (socket != null)

socket.close();

}

} catch (Exception e) {

}

}


我是这么写的!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!