使用java nio 编写简易聊天室

该博客介绍了如何使用Java的非阻塞I/O(NIO)库来创建一个简易聊天室。服务器端作为消息分发器,接收到任何客户端的消息后,会广播到所有连接的客户端。文章内容涉及NIO在聊天应用中的应用和客户端的交互机制。
摘要由CSDN通过智能技术生成

服务器端:相当于是一个接收客户端消息的分发器,为了简单,直接在接收到客户端的消息后,

                 直接发送给所有的客户端

package chatroom.chatserver;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.Iterator;
import java.util.Set;

public class ChatServer {

	public static void main(String[] args) {
		new ChatServer().serverRun();
	}

	public void serverRun() {

		Selector selector = null;

		try {
			ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
			serverSocketChannel.configureBlocking(false);
			ServerSocket socket = serverSocketChannel.socket();
			socket.bind(new InetSocketAddress(8888));

			selector = Selector.open();

			// 这里只是将该channel的accept设置为了selector感兴趣的,
                        // 此时并没有准备好,只有当客户端有连接请求的时候,这个channel的
                        // 感兴趣事件才会准备好
			SelectionKey register = serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);

			System.out.println("启动监听:8888端口");
			while (true) {
			// 这里只有存在准备好的事件的时候,才会返回,否则会一直阻塞
                        // 怎么才算准备好的? (当有相应的事件到来的时候࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值