Java基础 -> (TCP)客户端向服务端传递文件,并且服务端回一个消息给客服端

服务端:接受到文件后回一个"收到"

@Test
    public void testServer1() throws IOException {
        ServerSocket serverSocket = new ServerSocket(8899);
        Socket socket = serverSocket.accept();
        //选择流,字符输出字符输入,字节输出字节输入要对应,不能一个字符,一个字节,否则数组长度会改变
        //好像不能随便使用转换流,会报错
        InputStream socketInputStream = socket.getInputStream();
        FileOutputStream fileOutputStream = new FileOutputStream("Test929.txt");
        byte[] bytes = new byte[1024];
        int len;
        //.read()方法有个阻塞的功能,如果对方不说发送已经完成,我便一直等着你继续发送直到你说发送完成
        //socket.shutdownOutput();
        while ((len = socketInputStream.read(bytes)) != -1) {
            fileOutputStream.write(bytes, 0, len);
        }

        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("收到".getBytes());

        socketInputStream.close();
        fileOutputStream.close();
        outputStream.close();
    }

客户端:发送文件,并接受服务端发送来的"收到"

 @Test
    public void testClient1() throws IOException {
        Socket socket = new Socket("10.212.10.194", 8899);
        //选择流,字符输出字符输入,字节输出字节输入要对应,不能一个字符,一个字节,否则数组长度会改变
        //好像不能随便使用转换流,会报错
        OutputStream socketOutputStream = socket.getOutputStream();
        //文件格式不对会乱码也不要自己去使用转换流,因为本来就是文件从客户端发到服务端,不需要你去转码,什么是就是什么;
        FileInputStream fileInputStream = new FileInputStream("Test921.txt");

        byte[] bytes = new byte[1024];
        int len;
        while ((len = fileInputStream.read(bytes)) != -1) {
            socketOutputStream.write(bytes, 0, len);
        }
        //输出完成,之后不再输出,给对方信息说我不在发送输出了,且关闭Socket
        socket.shutdownOutput();

        InputStream inputStream = socket.getInputStream();
        //byte[] bytes = new byte[1024];
        while ((len = inputStream.read(bytes)) != -1) {
            System.out.println(new String(bytes, 0, len));
        }

        fileInputStream.close();
        socketOutputStream.close();
        inputStream.close();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值