客户端:
DataInputStream fis = new DataInputStream(new FileInputStream(f));
DataOutputStream ps = new DataOutputStream(socket.getOutputStream());
ps.writeUTF(f.getName());
ps.flush();
ps.writeUTF(name);
ps.flush();
ps.writeLong((long) f.length());
ps.flush();
int bufferSize = 1023;
byte[] buf = new byte[bufferSize];
while (true) {
int read = 0;
if (fis != null) {
read = fis.read(buf);
}
if (read == -1) {
System.out.println("文件传输结束");
break;
}
ps.write(buf, 0, read);
}
ps.flush();
服务器端:
try {
DataInputStream is = new DataInputStream(socket.getInputStream());
OutputStream os = socket.getOutputStream();
//1、得到文件名
String path="E:\\";
String filename = is.readUTF();
path+=filename;
String username = is.readUTF();
System.out.println("新生成的文件名为:"+path);
FileOutputStream fos = new FileOutputStream(path);
byte[] b = new byte[1023];
int length = 0;
while((length=is.read(b))!=-1){
//2、把socket输入流写到文件输出流中去
fos.write(b, 0, length);
System.out.println("还在写");
}
fos.flush();
}catch(Exception e) {
e.printStackTrace();
System.out.println("传输出错");
}
为什么服务器端始终不跳出循环?服务器端如何判断客户端传输完成?