zoukankan      html  css  js  c++  java
  • 用java网络编程中的TCP方式上传文本文件及出现的小问题

      自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用。

      首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文件给服务端,服务端接收数据并显示“上传成功”给客户端。

    客户端:

     1 import java.io.BufferedReader;
     2 import java.io.FileReader;
     3 import java.io.IOException;
     4 import java.io.InputStreamReader;
     5 import java.io.PrintWriter;
     6 import java.net.Socket;
     7 
     8 public class UploadClient {
     9 
    10     /**
    11      * @param args
    12      * @throws IOException 
    13      */
    14     public static void main(String[] args) throws IOException {
    15         //1.创建客户端的Socket对象
    16         Socket s=new Socket("192.168.1.127",10000);
    17         
    18         //2.将文件放入缓冲区,并上传
    19         BufferedReader bufr=
    20                 new BufferedReader(new FileReader("client.txt"));
    21         
    22         //通过使用PrintWriter对字节流和字符流进行处理,接管流
    23         PrintWriter out =new PrintWriter(s.getOutputStream(),true);
    24         
    25         //开始读取,上传给服务端
    26         String line=null;
    27         while((line=bufr.readLine())!=null){
    28             out.println(line);
    29         }
    30         
    31         //在这里必须给一个用于结束的标志,要不然服务端会一直等待·····
    32         out.println("over");
    33         
    34         //3.读取服务端返回的对象
    35         BufferedReader bufrIn =new BufferedReader(new InputStreamReader(s.getInputStream()));
    36         String str=bufrIn.readLine();
    37         System.out.println(str);
    38         
    39         //4.关流
    40         bufr.close();
    41         s.close();
    42     }
    43 
    44 }

    服务端:

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class UploadServer {
    
        /**
         * @param args
         * @throws IOException 
         */
        public static void main(String[] args) throws IOException {
            //1.建立服务端的socket对象
            ServerSocket ss=new ServerSocket(10000);
            //2.接收服务端的数据
            Socket s=ss.accept();
            
            //将接受的数据放入流中
            BufferedReader bufIn=
                    new BufferedReader(new InputStreamReader(s.getInputStream()));
            
            //指定要写入得文件
            BufferedWriter bufw=new BufferedWriter(new FileWriter("server.txt"));
            
            //开始读取
            //缓冲区的默认大小为8k,一到8k则会自动刷新,若没有结束标志,则得到的文件大小一定是8的倍数
            String line=null;
            while((line=bufIn.readLine())!=null){
                if("over".equals(line))
                    break;
                bufw.write(line);
                bufw.newLine();
                //自己写刷新
                bufw.flush();
            }
            
            //向客户端返回数据,用PrintWriter
            PrintWriter out =new PrintWriter(s.getOutputStream(),true);
            
            out.println("上传成功");
            
            //关流
            bufw.close();
            //与客户端断开连接关服务端
            s.close();
            ss.close();
        }
    
    }
  • 相关阅读:
    [转载]「服务」WCF中NetNamedPipeBinding的应用实例
    [转载] ABP框架理论学习之后台工作(Jobs)和后台工作者(Workers)
    .NET Core use NLog
    把.netcore console 安装到Windows 系统服务。
    利用Linq Skip() Take()分页
    C#访问Java的WebService添加SOAPHeader验证的问题
    马丁福勒 关于微服务特点的描述
    转载 springboot 配置读取
    luajit与NYI
    lua启用lua-resty-core
  • 原文地址:https://www.cnblogs.com/Liang-Blog/p/5621803.html
Copyright © 2011-2022 走看看