利用Socket serverSocket实现文件上传

客户端只用到Socket类

public class UploadTextClient {

    public static void main(String[] args) throws IOException{
        //1创建Socket
        Socket s = new Socket("192.168.31.168", 10005);

        //上传文件 ---发送
        //源: 磁盘文件, FileReader
        //目的: socket, s.getOutputStream()
        //额外功能:BufferedReader, PrintWriter
        BufferedReader br = new BufferedReader(new FileReader("files/a.txt"));
        PrintWriter pw = new PrintWriter( s.getOutputStream(),true);
        String str = null;
        while( (str=br.readLine())!=null){
            pw.println(str);
        }
        //★给服务器发送一个结束标记
        s.shutdownOutput();

        //接收服务器的应答消息
        BufferedReader br2 = new BufferedReader( new InputStreamReader(s.getInputStream()) );
        String info = br2.readLine();
        System.out.println("server:"+info);
        s.close();
    }

}

服务器端刚开始是用到ServerSocket, 再通过server.accept()拿到客户端的socket, 进而通过socket和客户端通讯

public class UploadTextServer {

    public static void main(String[] args) throws IOException {
        //1创建ServerSocket
        ServerSocket server = new ServerSocket(10005);
        //2获得握手方(客户端)对应的socket
        Socket ss = server.accept();
        //3读取客户端上传的文件数据----源:socket, 目的:本地磁盘
        BufferedReader br = new BufferedReader(new InputStreamReader(ss.getInputStream()));
        PrintWriter pw = new PrintWriter( new FileWriter("files\\abc.txt"),true);
        String str=null;
        while((str=br.readLine())!=null){
            pw.println(str);
        }


        //4向客户端写应答消息
        PrintWriter pw2 = new PrintWriter( ss.getOutputStream(),true);
        pw2.println("上传成功!");

        ss.close();
        server.close();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值