04_tcp从客户端发送文件到服务端(文字)

package com.baidu.tcp;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 服务端
 */
public class ServerDemo {
    public static void main(String[] args) {
        ServerSocket ss=null;
        BufferedWriter bw=null;
        OutputStream fs=null;

        try {
            //1.创建服务端套接字
            ss=new ServerSocket(9999);
            //2.监听客服端
            Socket s=ss.accept();
            //3.获取客户端通道的输入流
            InputStream is=s.getInputStream();
            InputStreamReader isr=new InputStreamReader(is);
            BufferedReader br=new BufferedReader(isr);
            //4.创建字符输出缓冲流,关联存储文件地
            bw=new BufferedWriter(new FileWriter("copy.txt"));
            //5.从客户端的通道输入流读取文件,写出到硬盘
            String line=null;
            while((line=br.readLine())!=null){
                bw.write(line);
                bw.newLine();
                bw.flush();
            }

            //数据接收完毕,给客户端一个反馈信息
            fs=s.getOutputStream();
            fs.write("数据上传成功!".getBytes());

        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                fs.close();
                bw.close();


            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

//===============================================
package com.baidu.tcp;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;

/**
 * 客户端
 */
public class ClientDemo{
    public static void main(String[] args) {

        Socket s=null;
        BufferedReader br=null;
        InputStream is=null;
        try {
            //1.创建客户端套接字
            s=new Socket("127.0.0.1",9999);
            //2.1获取通道输出流
            OutputStream os=s.getOutputStream();
            //2.2输入缓冲流关联文件
            br=new BufferedReader(new FileReader("C:\\Users\\mingming\\Desktop\\复习\\WEB01.txt"));
            //2.3把通道输出流转化成字符缓冲流
            OutputStreamWriter ow=new OutputStreamWriter(os);
            BufferedWriter bw=new BufferedWriter(ow);
            //2.4把文件写到通道流
            String line=null;
            while((line=br.readLine())!=null){
                bw.write(line);
                bw.newLine();
                bw.flush();
            }
            s.shutdownOutput();

            //3.数据上传完毕,接收服务端的反馈
            //3.1获取客户端通道的输入流
            is=s.getInputStream();

            byte[] buf=new byte[1024];
            int len=0;
            while((len=is.read(buf))!=-1){
                System.out.println(new String(buf,0,len));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                s.close();
                br.close();
                is.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
posted @ 2021-07-18 22:13  我是多多  阅读(93)  评论(0)    收藏  举报