aLittleGreens / Nettydemo
Netty应用到Android,包含客户端、服务端(断线重连、心跳、黏包处理)
Stars: ✭ 183
Programming Languages
java
68154 projects - #9 most used programming language
Projects that are alternatives of or similar to Nettydemo
cheshuo
🎃A lightweight game server framework. Based on Springboot and Netty. Using ProtoBuf as communication between client and server.
Stars: ✭ 23 (-87.43%)
Mutual labels: tcp, netty, nio
Mobileimsdk
一个原创移动端IM通信层框架,轻量级、高度提炼,历经8年、久经考验。可能是市面上唯一同时支持UDP+TCP+WebSocket三种协议的同类开源框架,支持iOS、Android、Java、H5,服务端基于Netty。
Stars: ✭ 3,864 (+2011.48%)
Mutual labels: nio, tcp, netty
Nettychat
基于Netty+TCP+Protobuf实现的Android IM库,包含Protobuf序列化、TCP拆包与粘包、长连接握手认证、心跳机制、断线重连机制、消息重发机制、读写超时机制、离线消息、线程池等功能。
Stars: ✭ 1,979 (+981.42%)
Mutual labels: nio, tcp, netty
Wheel
关于net nio os cache db rpc json web http udp tcp mq 等多个小工具的自定义实现
Stars: ✭ 45 (-75.41%)
Mutual labels: nio, netty
Getty
一个完全基于java的,类似netty的高性能网络框架A fully Java-based, netty - like high-performance networking framework
Stars: ✭ 45 (-75.41%)
Mutual labels: nio, netty
Httpproxy
http代理,支持CONNECT和普通GET/POST,支持http2;可防止主动嗅探;可作为小火箭、圈、surge等软件和SwitchyOmega(chrome插件)所说的https代理
Stars: ✭ 104 (-43.17%)
Mutual labels: nio, netty
Nioimapclient
High performance, async IMAP client implementation
Stars: ✭ 28 (-84.7%)
Mutual labels: nio, netty
Easychatandroidclient
EasyChat是一个开源的社交类的App。主要包含消息、好友、群组等相关的IM核心功能。部分界面参照了QQ、微信等相关社交APP。EasyChat APP整体采用MVVM模式,基于JetPack(Lifecycle,LiveData,ViewModel,Room)构建
Stars: ✭ 64 (-65.03%)
Mutual labels: tcp, netty
Books Recommendation
程序员进阶书籍(视频),持续更新(Programmer Books)
Stars: ✭ 558 (+204.92%)
Mutual labels: tcp, netty
Getty
a netty like asynchronous network I/O library based on tcp/udp/websocket; a bidirectional RPC framework based on JSON/Protobuf; a microservice framework based on zookeeper/etcd
Stars: ✭ 532 (+190.71%)
Mutual labels: tcp, netty
Jetlinks Community
JetLinks 基于Java8,Spring Boot 2.x ,WebFlux,Netty,Vert.x,Reactor等开发, 是一个全响应式的企业级物联网平台。支持统一物模型管理,多种设备,多种厂家,统一管理。统一设备连接管理,多协议适配(TCP,MQTT,UDP,CoAP,HTTP等),屏蔽网络编程复杂性,灵活接入不同厂家不同协议等设备。实时数据处理,设备告警,消息通知,数据转发。地理位置,数据可视化等。能帮助你快速建立物联网相关业务系统。
Stars: ✭ 2,405 (+1214.21%)
Mutual labels: tcp, netty
Carmelo
Carmelo is a fast, scalable Java server framework designed for online games. It uses Netty and Fastjson for highly efficient network transmission and supports both TCP/HTTP protocols.
Stars: ✭ 148 (-19.13%)
Mutual labels: nio, netty
Cookbook
🎉🎉🎉JAVA高级架构师技术栈==任何技能通过 “刻意练习” 都可以达到融会贯通的境界,就像烹饪一样,这里有一份JAVA开发技术手册,只需要增加自己练习的次数。🏃🏃🏃
Stars: ✭ 428 (+133.88%)
Mutual labels: nio, netty
NettyDemo
Netty是基于Java NIO client-server的网络应用框架,使用Netty可以快速开发网络应用
更多用法请请跳转到https://github.com/netty/netty
本项目基于Netty在Android平台所建项目,只是提供Netty的使用方式,大家可根据自己的需求,做相应的定制。
演示时,客户端在Const.java中请修改TCP服务端ip地址就行了,服务端通过切换通道,可以与多个客户端通信。
最后,不足之处请海涵,多多提issue,大家一起解决。
如何导入
dependencies {
implementation 'com.littlegreens.netty.client:nettyclientlib:1.0.5'
}
一、先看演示效果,后面有详细的用法教程
如果是作为TCP客户端使用的话,可以直接依赖
二、HOW TO USE?
- 创建TCP客户端
NettyTcpClient mNettyTcpClient = new NettyTcpClient.Builder()
.setHost(Const.HOST) //设置服务端地址
.setTcpPort(Const.TCP_PORT) //设置服务端端口号
.setMaxReconnectTimes(5) //设置最大重连次数
.setReconnectIntervalTime(5) //设置重连间隔时间。单位:秒
.setSendheartBeat(true) //设置是否发送心跳
.setHeartBeatInterval(5) //设置心跳间隔时间。单位:秒
.setHeartBeatData("I'm is HeartBeatData") //设置心跳数据,可以是String类型,也可以是byte[],以后设置的为准
.setIndex(0) //设置客户端标识.(因为可能存在多个tcp连接)
// .setPacketSeparator("#")//用特殊字符,作为分隔符,解决粘包问题,默认是用换行符作为分隔符
// .setMaxPacketLong(1024)//设置一次发送数据的最大长度,默认是1024
.build();
- 设置监听
mNettyTcpClient.setListener(new NettyClientListener<String>() {
@Override
public void onMessageResponseClient(String msg, int index) {
//服务端过来的消息回调
}
@Override
public void onClientStatusConnectChanged(int statusCode, int index) {
//连接状态回调
}
});
- 连接、断开连接
- 判断是否已经连接
mNettyTcpClient.getConnectStatus()
- 连接
mNettyTcpClient.connect();
- 断开连接
mNettyTcpClient.disconnect();
- 发送信息到服务端
mNettyTcpClient.sendMsgToServer(msg, new MessageStateListener() {
@Override
public void isSendSuccss(boolean isSuccess) {
if (isSuccess) {
Log.d(TAG, "send successful");
} else {
Log.d(TAG, "send error");
}
}
});
二、小伙伴遇到的问题
1、服务端反馈的消息被截断 答:由于socket会粘包,sdk中默认的采用的是特殊符号作为分割符,来解决粘包问题,默认采用的分隔符是分割符,也可以通过setPacketSeparator,设置自定义的换行符,这样客户端发送信息的时候,sdk会在末尾,添加分隔符,这里需要注意服务端,返回信息的时候,也要添加对应的分隔符。
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].