All Projects → aLittleGreens → Nettydemo

aLittleGreens / Nettydemo

Netty应用到Android,包含客户端、服务端(断线重连、心跳、黏包处理)

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
T Io
解决其它网络框架没有解决的用户痛点,让天下没有难开发的网络程序
Stars: ✭ 1,331 (+627.32%)
Mutual labels:  nio, tcp, netty
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
Netty Stroll
RPC基础通信框架
Stars: ✭ 77 (-57.92%)
Mutual labels:  tcp, netty
Jupiter
Jupiter是一款性能非常不错的, 轻量级的分布式服务框架
Stars: ✭ 1,372 (+649.73%)
Mutual labels:  nio, netty
Simple Rpc
RPC with service discovery base on netty
Stars: ✭ 103 (-43.72%)
Mutual labels:  nio, netty
Httpproxy
http代理,支持CONNECT和普通GET/POST,支持http2;可防止主动嗅探;可作为小火箭、圈、surge等软件和SwitchyOmega(chrome插件)所说的https代理
Stars: ✭ 104 (-43.17%)
Mutual labels:  nio, netty
Face2face
基于netty的异步非阻塞实时聊天(IM)服务器。
Stars: ✭ 1,468 (+702.19%)
Mutual labels:  nio, netty
Cim
📲cim(cross IM) 适用于开发者的分布式即时通讯系统
Stars: ✭ 8,109 (+4331.15%)
Mutual labels:  tcp, 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
Happychat
基于Netty实现的WebSocket聊天室,支持几万人同时在线聊天
Stars: ✭ 445 (+143.17%)
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?

  1. 创建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();
  1. 设置监听
        mNettyTcpClient.setListener(new NettyClientListener<String>() {
            @Override
            public void onMessageResponseClient(String msg, int index) {
                //服务端过来的消息回调
            }

            @Override
            public void onClientStatusConnectChanged(int statusCode, int index) {
               //连接状态回调
            }
        });
  1. 连接、断开连接
  • 判断是否已经连接
mNettyTcpClient.getConnectStatus()
  • 连接
mNettyTcpClient.connect();
  • 断开连接
mNettyTcpClient.disconnect();
  1. 发送信息到服务端
                    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].