package test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class File_Client {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket socket = new Socket("127.0.0.1",7777);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
System.out.println("请输入要上传到服务器的文件路径");
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
BufferedInputStream bis=null;
if(new File(s).isFile()){
bis = new BufferedInputStream(new FileInputStream(s));
}else{
System.out.println("您输入的路径有误,请重启客户端");
System.exit(0);
}
bos.write(new File(s).getName().getBytes());
bos.flush();
bos.write(new File(s).getName().getBytes().length);
bos.flush();
System.out.println(br.readLine());
int i = 0;
byte[] tt = new byte[1024];
while((i = bis.read(tt))!= -1){
bos.write(tt,0,i);
}
bos.flush();
bis.close();
// System.out.println(br.readLine()); //为什么这里的输出会出问题
socket.close();
}
}
————————————————————————————————————————————————————————————————
package test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class File_Server {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(7777);
Socket socket = server.accept();
BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
PrintStream ps = new PrintStream(socket.getOutputStream());
byte[] i = new byte[1000];
bis.read(i);
int w =bis.read();
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(new String(i,0,w))));
// System.out.println(new String(i,0,w));
ps.println("开始上传" + new String(i,0,w));
int x = 0;
byte[] tt = new byte[4096];
while((x = bis.read(tt))!= -1){
bos.write(tt,0,x);
bos.flush();
}
// ps.println("上传成功"); //卡在这里了
bos.close();
socket.close();
}
}
不知道是什么问题,文件能够上传上来,但是,会卡在最后一句返回那里,请大神拯救...............
|
|