zoukankan      html  css  js  c++  java
  • 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();就能成功上传文件。

  • 相关阅读:
    Yii的上传类使用CUploadedFile
    后台无刷新修改字段js
    YII CGridView的分析
    YII开发技巧分享——模型(models)中rules自定义验证规则
    easy_ui之窗口弹出的实例
    php后台如何避免用户直接进入方法
    暑假周总结三
    暑假周总结二
    暑假周总结一
    从入门到精通6
  • 原文地址:https://www.cnblogs.com/loleina/p/5174973.html
Copyright © 2011-2022 走看看