NIO基于通道的网络IO,服务端获得客户端数据

@Test
public void serverdemo() throws IOException {
    ServerSocketChannel channel = ServerSocketChannel.open();
    channel.socket().bind(new InetSocketAddress(8888));

    SocketChannel c = null;
    while(c == null){
        c = channel.accept();//服务端监听端口
    }

    ByteBuffer buffer = ByteBuffer.allocate(50);
    if(c!=null){
        if(c.read(buffer)>0) {
            System.out.println("接收" + buffer.array().toString());
        }
    }
}



//客户端代码 向127.0.0.1:8888发送socket连接
@Test
public void clientdemo() throws IOException {
    SocketChannel c = SocketChannel.open(new InetSocketAddress("127.0.0.1",8888));             //绑定目标地址和端口

    ByteBuffer buffer = ByteBuffer.allocate(1024);
    buffer.put(new Date().toString().getBytes());  //缓冲区存入“当前时间”数据
    buffer.flip();
    c.write(buffer);    //往channel写入数据
    buffer.clear();
}

测试代码简单描述了一个客户端向服务端发送socket连接的场景。

服务端通过ServerSocketChannel监听得到的SocketChannel与客户端的SocketChannel内容,我们调试可以发现一模一样。当然,存储地址是不一样的,因为是”两台“电脑之间的网络IO。

 就是这样,服务端可以得到客户端中SocketChannel相同的内容,材能获取客户端发送过来的数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值