Java NIO (异步IO)Socket通信例子[转]_亮仔_新浪博客

服务器异步通信与事件选择器原理
本文详细介绍了服务器端使用异步通信机制实现高效数据传输的过程,重点阐述了事件选择器在管理套接字通道事件中的作用,以及如何通过循环查询事件来优化服务器性能。

 

服务器代码:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.*;
import java.nio.*;
import java.nio.channels.*;

public class server
{
// 
   定义一个临时的socket
    SocketChannel sc;
    public void start()
    {
        try
        {
            //定义一个事件选择器对象记录套接字通道的事件
            Selector selector = Selector.open();
            //定义一个异步服务器socket对象
            ServerSocketChannel ssc=ServerSocketChannel.open();
            //将此socket对象设置为异步
            ssc.configureBlocking(false);
            //定义服务器socket对象-用来指定异步socket的监听端口等信息
            ServerSocket ss=ssc.socket();
            //定义存放监听端口的对象
            InetSocketAddress address = new InetSocketAddress(55555);
            //将服务器与这个端口绑定
            ss.bind(address);
            //将异步的服务器socket对象的接受客户端连接事件注册到selector对象内
            ssc.register(selector, SelectionKey.OP_ACCEPT);
           
            System.out.println("端口注册完毕!");
            //通过此循环来遍例事件
            while(true)
            {
                //查询事件如果一个事件都没有就阻塞
                selector.select();
                //定义一个byte缓冲区来存储收发的数据
                ByteBuffer echoBuffer=ByteBuffer.allocate(10);
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值