Nio服务器和客户端相互通信,服务器接受且能主动推送消息给客服端

本文介绍了如何使用Java NIO实现在服务器接收到客户端心跳信息的同时,也能主动向特定客户端推送消息。文中引用了相关教程资源,并分享了简单的服务器代码示例,实现了客户端信息的保存和指定客户端的消息发送功能。
摘要由CSDN通过智能技术生成

先介绍一下项目需求,主要是服务器接受客服端(电子柜台)传来的心跳信息,服务器也能主动发送信息给客户端

 

最近看了很多帖子,大多是服务器接受信息,然后被动回应客服端,这里我简单的做了一个管理客户的列表。用于指定发送

 

(当然就是本地操作成功,还未完全测试,应该还是存在很多Bug,仅供参考!!)

 

先说说Nio,这里就直接贴大神的链接啦:https://gitbook.cn/books/5b1792ad26a49a55324e782c/index.html

还有就是这里这套学校管理老师的比喻,就很形象,比较适合我这种菜鸟理解:https://www.cnblogs.com/wcyBlog/p/4716676.html

 

 

 

然后就是代码了!!!!!

 

 

 

 

服务器代码如下:

 

package com.js.archive.tcp;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.util.HashMap;
import java.util.Iterator;

public class TcpServer {
//缓冲区长度
private static final int BUF_SIZE = 28000;
//select 方法等待星道准备好的最长时间
private static final int timeout = 3000;

public static Selector selector;

/**
* 发送消息的开关
*/
public static boolean signal = false;

/**
* 发送消息的内容
*/
public static String message= "";

public static void main(String[] args) throws IOException {

init("192.168.0.166",1006);
new ServerWriteThread();
tcpServer();
}

public static void init(String hostname,Integer port) throws IOException {
if (selector == null) {
synchronized (TcpServer.class) {
if (selector == null) {
//创建一个选择器
selector = Selector.open();
//实例化一个信道
ServerSocketChannel socketChannel = ServerSocketChannel.open();
//将该信道绑定到指定端口
InetSocketAddress inetSocketAddress = new InetSocketAddress(hostname, port);
socketChannel .bind(inetSocketAddress);
System
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值