java socket群聊_java网络socket编程(七)之java中NIO实现聊天系统的群聊功能

本文介绍如何使用Java的非阻塞I/O(NIO)创建一个聊天室服务器,支持多个客户端连接。服务器端代码通过Selector监听客户端连接,处理客户端的读写请求。客户端代码通过SocketChannel与服务器交互,发送昵称并接收服务器消息。当有新的客户端加入时,服务器会通知所有在线用户。
摘要由CSDN通过智能技术生成

1.服务器端代码

import java.io.IOException;

import java.net.InetSocketAddress;

import java.net.ServerSocket;

import java.nio.ByteBuffer;

import java.nio.channels.Channel;

import java.nio.channels.SelectionKey;

import java.nio.channels.Selector;

import java.nio.channels.ServerSocketChannel;

import java.nio.channels.SocketChannel;

import java.nio.charset.Charset;

import java.util.HashSet;

import java.util.Iterator;

import java.util.Set;

/**

* 聊天室服务器

* 网络多客户端聊天室

* 功能1: 客户端经过Java NIO链接到服务端,支持多客户端的链接

* 功能2:客户端初次链接时,服务端提示输入昵称,若是昵称已经有人使用,提示从新输入,若是昵称惟一,则登陆成功,以后发送消息都须要按照规定格式带着昵称发送消息

* 功能3:客户端登陆后,发送已经设置好的欢迎信息和在线人数给客户端,而且通知其余客户端该客户端上线

* 功能4:服务器收到已登陆客户端输入内容,转发至其余登陆客户端。

* @author 1

* @date Aug 22, 2016 4:02:01 PM

*/

public class ChatRoomServer {

/** 选择器 */

private Selector selector;

/*****端口号*****/

private final static int PORT=9900;

/*******在线统计人名或人数********/

private HashSet online = new HashSet();

/****编码*****/

private Charset charset = Charset.forName("UTF-8");

/****用户存在提示信息*****/

private static String USER_EXIST = "system message: user exist, please change a name";

/****至关于自定义协议格式,与客户端协商好*****/

private static String USER_CONTENT_SPILIT = "#@#";

public static void main(String[] args) {

try {

new ChatRoomServer().init();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 初始化服务器

* @author 1

* @throws IOException

*/

public void init() throws IOException{

//打开选择器

this.selector = Selector.open();

// 开启服务器端通道,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值