NIO(五) - 阻塞试Socket通讯

9 篇文章 0 订阅
package com.xbb.demo;

import org.junit.Test;

import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;

public class SocketNonBlockingDemo {

    /**
     * 客户端
     */
    @Test
    public void client(){
        try(
                SocketChannel socketChannel = SocketChannel.open(new InetSocketAddress("127.0.0.1",9999));
                ){
            ByteBuffer buf = ByteBuffer.allocate(1024);
            String msg = "你好,主子";
            buf.put(msg.getBytes());
            buf.flip();
            socketChannel.write(buf);
            socketChannel.shutdownOutput();
            while(socketChannel.read(buf) != -1){
                buf.flip();
                System.out.println(new String(buf.array(),0,buf.limit()));
                buf.clear();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    /**
     * 服务端
     */
    @Test
    public void server(){
        try(
                ServerSocketChannel socketChannel = ServerSocketChannel.open();
                ){
            socketChannel.bind(new InetSocketAddress(9999));
            SocketChannel channel = socketChannel.accept();
            ByteBuffer buf = ByteBuffer.allocate(1024);
            while(channel.read(buf) != -1){
                buf.flip();
                System.out.println("来自客户端的消息 : " + new String(buf.array(),0,buf.limit()));
                buf.clear();
            }
            channel.shutdownInput();
            String msg = "你也好,孙子";
            buf.put(msg.getBytes());
            buf.flip();
            channel.write(buf);
        }catch (Exception e){
            e.printStackTrace();
        }
    }



}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值