心得14--网络编程5-Tcp文件上传与输出
12.0.0.1代表本机IP。不要有中文路径,但是可以有中文文件名。中文路径会报错
客户端:
packagecom.TcpFile;
importjava.io.BufferedReader;
importjava.io.FileReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
importjava.net.Socket;
publicclass UpLoadClient {
/**
* 客户端,把服务器上传文件
* @param args
* @throws IOException
*/
publicstaticvoid main(String[]args) throws IOException {
Socket s = new Socket("127.0.0.1",8888); //12.0.0.1代表本机IP
BufferedReader br = new BufferedReader(new FileReader("d:\\中搜.txt")); //不要有中文路径,但是可以有中文文件名。中文路径会报错
PrintWriter pwOut = new PrintWriter(s.getOutputStream(),true);
String line = null;
while((line=br.readLine())!=null) {
pwOut.println(line);
}
s.shutdownOutput(); //关闭输出流,为了告诉服务器该文件已经读完即全部上传
//收到来自服务器端的反馈信息
BufferedReader brin = new BufferedReader(new InputStreamReader(s.getInputStream()));
System.out.println(brin.readLine());
br.close();
s.close();
}
}
服务器端:
packagecom.TcpFile;
importjava.io.BufferedReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
importjava.net.ServerSocket;
importjava.net.Socket;
publicclass UpLoadServer {
/**
* 服务器端,用来让用户从其上下载文件
* @param args
* @throws IOException
*/
publicstaticvoid main(String[]args) throws IOException {
ServerSocket ss = new ServerSocket(8888);
Socket s = ss.accept();
System.out.println(s.getInetAddress().getHostAddress()+"已连接!"); //获得客户端Ip用来提示服务端
BufferedReader brin = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter pw = new PrintWriter(new FileWriter("d:\\1.txt"),true);
String line = null;
while((line=brin.readLine())!=null) {
pw.println(line);
}
// 给客户端回馈信息
PrintWriter pwOut = new PrintWriter(s.getOutputStream(),true);
pwOut.println("发送成功!!");
pw.close();
s.close();
ss.close();
}
}