欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

java SocketChannel and ServerSocketChannel

发布时间:2025/7/14 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java SocketChannel and ServerSocketChannel 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1 SocketChannel

1.1 打开一个SocketChannel

SocketChannel socketChannel = SocketChannel.open();

socketChannel.connect(new InetSocketAddress("http://www.baidu.com", 80));

1.2 关闭一个SocketChannel

socketChannel.close();

1.3 读取一个SocketChannel

ByteBuffer buf = ByteBuffer.allocate(48);

int byteRead = socketChannel.read(buf);

2 ServerSocketChannel

2.1 ServerSocketChannel in blocking mode

    ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();

    serverSocketChannel.socket().bind(new InetSocketAddress(1111));

    while(true) {

        SocketChannel socketChannel = serverSocketChannel.accept();

        // do something with socketChannel.......

    }

2.2 ServerSocketChannel in non-blocking mode

    ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();

    serverSocketChannel.socket().bind(new InetSocketAddress(1111));

    serverSocketChannel.configureBlocking(false);

    while(true) {

        SocketChannel socketChannel = serverSocketChannel.accept();

        if (socketChannel != null)

        {

            // do something with socketChannel.......

        }

    }

在non-blocking mode时,没有人来connect的时候accept()就会直接返回。这也是non-blocking的意义所在,对于文件而言,总是可以读写的,不存在block一说,也就没有non-blocking mode了。

 

转载于:https://www.cnblogs.com/hustdc/p/8109785.html

总结

以上是生活随笔为你收集整理的java SocketChannel and ServerSocketChannel的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。