• 用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();
        }
    
    }
  • 相关阅读:
    win7下 不支持DOS全屏 This system does not support fullscreen mode
    C语言 猜字游戏
    C语言 寻找字符串的第一个小写字母
    getch 函数 当ubuntu下没有curses.h下怎么办?
    C语言 将小写字母写入文件
    vc++读取文件属性的详细信息描述 读取QQ的注册表路径
    C语言 输入字符写入文件再计算文件里的大写字母个数
    #define STRICT 让编译器进行严格类型检查
    HDU1875 畅通工程再续
    HDU4146 Flip Game
  • 原文地址:https://www.cnblogs.com/Liang-Blog/p/5621803.html
Copyright © 2020-2023  润新知