java nio长连接实现_kio: kio是基于jdk 1.6 nio实现的TCP长连接即时通讯框架。
#kio: TCP长连接框架 适用于Android前端
#为何要开发kio#
由于之前开发的Android推送系统,使用HTTP实现的,随着业务的扩展,服务器的压力随之增大,开始考虑使用TCP长连接来重新实现,正好在一个技术群里了解到t-io,正是我想要的,本地测试都没问题,当把客户端迁移到Android系统时,才发现一个致命的问题,由于t-io是基于Jdk1.7开发的,而Android系统却是基于Jdk1.6,Jdk1.7的nio改动又非常大,所以才有了kio这个项目。kio大量借鉴了t-io的思想及代码,在此对t-io的作者表示感谢。
应用场景
IM
Android推送服务(已有解决方案)
实时监控
其它实时通讯场景等
快速入门
服务器端
启动服务
ServerMain.java
package com.kipling.kio.demo.server;
import java.io.IOException;
import com.kipling.kio.core.intf.Packet;
import com.kipling.kio.server.KioServer;
import com.kipling.kio.server.ServerGroupContext;
import com.kipling.kio.server.intf.ServerKioHandler;
/**
* @author KiplingLee E-mail: kiplinglee@163.com
* @version 创建时间:2017年5月3日 上午10:39:44
*
*/
public class ServerMain {
static ServerKioHandler serverHandler = new ShowcaseServerKioHandler();
static ServerGroupContext serverGroupContext = new ServerGroupContext(serverHandler);
static KioServer kioServer = new KioServer(serverGroupContext);
public static void main(String[] args) {
try {
kioServer.start("127.0.0.1", 6789);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端
先启动服务器端后在启动两个客户端即可以实现P2P通讯
ClientMain.java
package com.kipling.kio.client.entity;
import java.io.IOException;
import com.kipling.kio.client.TalkClient;
public class ClientMain {
public static void main(String[] args) throws IOException {
TalkClient.buildClient("127.0.0.1",6789,"123456","654321");
}
}
ClientMain1.java
package com.kipling.kio.client.entity;
import java.io.IOException;
import com.kipling.kio.client.TalkClient;
public class ClientMain1 {
public static void main(String[] args) throws IOException {
TalkClient.buildClient("127.0.0.1",6789,"654321","123456");
}
}
发送消息
接收消息
java nio长连接实现_kio: kio是基于jdk 1.6 nio实现的TCP长连接即时通讯框架。相关推荐
- enityframework 已连接的当前状态为打开。_关于性能优化 从tcp建立连接amp;断开的视角...
从 tcp 连接的角度优化 三次握手 Client端的优化 : 正常情况下 客户端发送syn包以后 就会等待server的ack包, 但是如果因为丢包或其他原因导致没有收到ack包呢? 此时Clien ...
- java即时通讯框架_Spring Boot 开发私有即时通信系统(WebSocket)
1/ 概述 利用Spring Boot作为基础框架,Spring Security作为安全框架,WebSocket作为通信框架,实现点对点聊天和群聊天. 2/ 所需依赖 Spring Boot 版本 ...
- 使用netty实现并维护TCP长连接
使用netty实现并维护TCP长连接 Netty是什么 Netty的优点 Netty为什么并发高 创建TCP长连接实例 Netty是什么 Netty 是一个利用 Java 的高级网络的能力,隐藏其背后 ...
- python使用socket实现协议TCP长连接框架
点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 使用python实现协议中常见的TCP长连接框架." 分析多了协议就会发现,很多的应用,特别是游戏类和IM类应用,它们的协议会使用 ...
- TCP长连接实践与挑战
本文介绍了tcp长连接在实际工程中的实践过程,并总结了tcp连接保活遇到的挑战以及对应的解决方案. 作者:字节跳动终端技术 --- 陈圣坤 概述 众所周知,作为传输层通信协议,TCP是面向连接设计的, ...
- java中talent-aio_通讯框架:talent-aio实例
简 介 talent-aio是基于java aio实现的即时通讯框架,源于作者另一个久经考验的talent-nio框架,但在易用性.性能及代码可读性方面又远远超越了talent-nio.官网地址:ht ...
- startupinfo为什么需要初始化_为什么 TCP 建立连接要三次握手
为什么这么设计(Why's THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点.对具体实现造成的影响 ...
- 【计算机网络】TCP关闭连接问题及注意
TCP状态: LISTEN:侦听来自远方的TCP端口的连接请求 SYN-SENT:再发送连接请求后等待匹配的连接请求 SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认 ES ...
- mobaxterm为什么无法连接_为什么 TCP 建立连接需要三次握手
为什么这么设计(Why's THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点.对具体实现造成的影响 ...
最新文章
- 二级联动菜单,简单实现
- 似水流年,美丽清华园
- 【EventBus】EventBus 使用示例 ( 最简单的 EventBus 示例 )
- crtmpserver流媒体服务器的介绍与搭建
- 1.10 比较两个数组是否相等(equals())
- 十分经典的批处理教程
- Winform中使用DevExpress的CheckEdit控件实现多选条件搜索
- python改文件名_通过python顺序修改文件名字的方法
- jeecg 分布式部署附件共享问题(linux下配置共享磁盘nfs服务)
- WORD如何制作参考文献?
- 传输分析_医院智能物流传输系统运营管理和效益分析
- 【Leetcode】Remove Duplicates from Sorted Array II
- 计算机配色在纺织中的应用,计算机配色在印染行业的应用
- Scrapy-2:东莞阳光政务平台
- 去哪儿CEO庄辰超:傍百度战携程与巨头共舞
- autoIt_v3 学习之路
- 440 亿美元成交!Twitter 「卖身」马斯克
- WebSocket 是什么原理?为什么可以实现持久连接?
- STM32 CAN模块问题:1、CAN收发器断电后重新上电,CAN模块死机(离线)现象;2、过滤器配置完之后没有过滤效果
- stm32cubeMX配置人体感应器SR505
热门文章
- 腾讯云linux系统结合nginx部署项目
- .attr()与.removeAttr()
- Python(1):写在前面
- 使用element UI 快速制作一个列表页面
- Tomcat配置https访问SSL证书(pfx文件)
- JAVA:Java二维数组处理-Bit型转Bitmap
- 使用 yield 减少内存消耗
- 小白都能玩的算法day2-数量级、输入和输出
- 基于Java的Selenium学习笔记——Assert
- Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D. Little Artem and Dance 模拟