• java 网络编程(五)----TCP进阶篇上传文本文件


    设计需求:从客户端上传txt文件到服务器,服务端收到文件后,发送消息给客户端接收完成。

    1. 服务器端:

    public class UpLoadFileServer {

    public static void main(String[] args) throws Exception {

    ServerSocket ss = new ServerSocket(10010);

    Socket s =ss.accept();

    BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));

    BufferedWriter bufw =new BufferedWriter(new FileWriter("D:\server.txt"));

    String line1 =null;

    while((line1=bufin.readLine())!=null)
    {
    bufw.write(line1,0,line1.length());
    }

    System.out.println("服务端接收完了。。。。");
    PrintWriter out = new PrintWriter(s.getOutputStream(),true);
    out.println("上传成功");
    System.out.println("服务端反馈客户端完了。。。。");

    bufw.close();


    s.close();
    ss.close();

    }
    }

    2. 客户端:

    public class UploadFileClient {

    public static void main(String[] args) throws Exception {

    Socket s = new Socket("192.168.5.163",10010);

    File file =new File("d:\1.txt");

    BufferedReader buffer =new BufferedReader(new FileReader(file));

    PrintWriter out = new PrintWriter(s.getOutputStream(),true);

    String line =null;

    while((line=buffer.readLine())!=null)
    {
    out.println(line);
    System.out.println("客户端读取文件里的内容"+line);
    }

    System.out.println("客户端发完了 。。。。。");
    BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));
    s.shutdownOutput();
    String result=bufin.readLine();
    System.out.println("客户端接收到了服务器的数据了 。。。。。");
    System.out.println(result);

    buffer.close();
    s.close();
    }
    }

       小总结:之前运行一直不成功,进行调试发现,是客户端这边数据已经传输完了,但是服务器端还一直在等待客户端继续传递数据过来,而且一直没有把接收到的数据写到文件内。后在客户端增加:s.shutdownOutput();就能成功上传文件。

  • 相关阅读:
    osx 编译安装配置 ruby on rails
    tls/ssl证书生成和格式转换
    nginx相关的一些记录
    用systemd脚本自动启动node js程序
    SSH Tunneling
    c代码读取目录信息
    用Qt Creator 对 leveldb 进行简单的读写
    centos 7 相关的一些记录
    发现一段精简的模板算法(非原创)
    几个常用的散列算法
  • 原文地址:https://www.cnblogs.com/loleina/p/5174973.html
Copyright © 2020-2023  润新知