跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

开发一个简单的Android聊天软件


hacker123

推荐的帖子

开发一个简单的Android聊天软件,需要将开发一个Android应用,以及服务端程序。
客户端登录后初始化socket长连接,向服务端发起链接,服务端收到客户端链接,返回链接成功,即客户端上线成功。
客户端上线成功后,即可以向服务端发送消息,服务端收到消息后,将消息转发给指定的客户端。一条聊天消息即发送成功。
一、 客户端主要依赖

客户端完成socket长连接功能,我选择的引用这个websocket包。

//websocket
    implementation 'org.java-websocket:Java-WebSocket:1.5.1'
//json解析    
    implementation 'com.google.code.gson:gson:2.7'

   

二、包引用完成后,创建wsClient类。

我的日志打印用了com.github.zhaokaiqiang.klog:library,所以是KLog方法打印

public class WsClient extends WebSocketClient {
    public WsClient(URI serverUri) {
        super(serverUri,new Draft_6455());
    }

    @Override
    public void onOpen(ServerHandshake handshakedata) {
        KLog.d("JWebSocketClient", "onOpen()");
    }

    @Override
    public void onMessage(String message) {
        KLog.d("JWebSocketClient", "onMessage()");
    }

    @Override
    public void onClose(int code, String reason, boolean remote) {
        KLog.d("JWebSocketClient", "onClose()");
    }

    @Override
    public void onError(Exception ex) {
        KLog.d( "onError()"+ex);
    }
}

   

在业务逻辑中,调用WsClient(uri)(一般选择在用户登录成功后),开始调用这个方法完成长链接初始化,然后调用connectBlocking()开始尝试连接。

WsClient client = new WsClient(uri) {
            @Override
            public void onMessage(String message) {
                \\在这里处理服务端发来的消息
                KLog.d("onMessage", message);
            }
            @Override
            public void onOpen(ServerHandshake handshakedata) {
                super.onOpen(handshakedata);
                KLog.i("SocketClientService", "websocket连接成功");
            }

            @Override
            public void onClose(int code, String reason, boolean remote) {
                KLog.i("SocketClient", "onClose()");
            }
}

client.connectBlocking();

    
 

三、连接成功后,就可以在对于业务逻辑调用以下方法开始发送消息

public void sendMsg(String msg) {
        if (null != client) {
            try {
                client.send(msg);
            }catch (WebsocketNotConnectedException e){
                KLog.e("长连接发送失败", String.valueOf(e));
            }
            KLog.d("发送的消息", msg);
        }
    }

   

服务端实现会在下一章节更新

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...