Android实现WebServer(服务端)之Java-WebSocket

Android网络通信之Socket、WebSocket和WebService服务器 在上面的示例中,我们首先创建一个SoapObject对象,并设置要调用的WebService方法和参数。在上面的示例中,我们首先创建一个OkHttpClient对象,并使用WebSocketListener来处理WebSocket的事件。然后,我们创建一个WebSocket对象,并指定服务器的URL。为了实现与服务器之间的数据交互,我们可以利用不同的协议和技术,如Socket、WebSocket和WebService服务器。在上面的示例中,我们首先创建一个Socket对象,并指定服务器的IP地址和端口号。 阅读详情
AI摘要

本文介绍了在Android中使用Java-WebSocket库实现WebSocket服务端和客户端的集成步骤,包括启动服务、建立连接和进行双向通信的代码示例,并提供了测试方法和需要注意的优化点。

作者:小红妹
开发工具:Android studio
开发语言:Kotlin+Java
Gradle版本:gradle-7.5

前言

WebSocket弥补了HTTP协议不可双向通信的问题,所谓双向通信,Client可以向Server端发送信息,反之亦然,Server端也可以向Client发送信息。

集成

这里选择使用Java-WebSocket库

项目源代码位于: https://github.com/TooTallNate/Java-WebSocket
示例代码位于: https://github.com/TooTallNate/Java-WebSocket/tree/master/src/main/example

Android studio集成步骤
1、

implementation 'org.java-websocket:Java-WebSocket:1.5.3'

代码参考
Server端代码
SocketServer.java

import android.util.Log;

import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;

/**
 * @author 小红妹
 * @date 2023/3/1
 * @email L2279833535@163.com
 * @package com.xuanyi.webserver.service
 * @describe Java-WebSocket服务端(server)
 * @copyright
 */

public class SocketServer extends WebSocketServer {
   
   

    private static final String TAG = "SocketServer";

    public SocketServer(int port) throws UnknownHostException {
   
   
        super(new InetSocketAddress(port));
    }

    public SocketServer(InetSocketAddress address) {
   
   
        super(address);
    }

    @Override
    public void onOpen(WebSocket conn, ClientHandshake handshake) {
   
   
        conn.send("Welcome to the server!"); // This method sends a message to the new client
        broadcast("new connection: " + handshake
                .getResourceDescriptor()); // This method sends a message to all clients connected
        System.out.println(
                conn.getRemoteSocketAddress().getAddress().getHostAddress() + " entered the room!");
    }

    @Override
    public void onClose(WebSocket conn, int code, String reason, boolean remote) {
   
   
        broadcast(conn + " has left the room!");
        System.out.println(conn + " has left the room!");
    }

    @Override
    public void onMessage(WebSocket conn, String message) {
   
   

        broadcast(message);
        System.out.println(conn + ": " + message);
    }

    @Override
    public void onError(WebSocket conn, Exception ex) {
   
   
        ex.printStackTrace();
        Log.d(TAG, "onError:  conn = " + conn + ", ex = " + ex.getMessage());
        if (conn != null) {
   
   
            // some errors like port binding failed may not be assignable to a specific
            // websocket
        }
    }

    @Override
    public void onStart() {
   
   
        System.out.println("Server started!");
        setConnectionLostTimeout(0);
        setConnectionLostTimeout(100);
    }

}

启动服务MainActivity

import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.xuanyi.webserver.R
import com.xuanyi.webserver.service.SocketServer
import com.xuanyi.webserver.service.WebService
import com.xuanyi.webserver.utils.NetWork
import kotlinx.android.synthetic.main.activity_main.*

/**
 * 小红妹
 * 布局很简单,自己写,两个控件按钮,一个启动,一个发送数据
 */
class MainActivity : AppCompatActivity() {
   
   

    val TAG = "MainActivity"
    var s: SocketServer?=null

    override fun onCreate(savedInstanceState: Bundle?) {
   
   
        super.<
Android实现WebServer(服务端)之AndServer 大开眼界,Android竟然也可以写应用服务端了~ 阅读详情

相关推荐

在 Android 设备上搭建 Web 服务器

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

2401_83915450的博客 1226

Android搭建HTTP和WebSocket的服务器端

Android服务器搭建Android服务器搭建AndServer搭建HTTP服务器配置依赖创建服务器举例展示Java-WebSocket搭建WebSocket配置依赖创建服务器举例展示 Android服务器搭建 搭建Android服务器,是有一定需求的。当需要一定数据传输时,如果额外搭建服务器,会造成一定的开发成本问题和数据延迟问题。这时如果搭建一个Android平台服务器,可以很好的解决此问题...

qq_37149418的博客 4528

android下面的webserver的实现

android下面的webserver的实现,可以使用无线把android设备当作服务器,别的设备或者pc只要在这个网段就可以通过浏览器或者发送socket消息模拟http协议实现访问无线设备的内容。

Android Web服务器(NanoHttpd)-Android开发

Android Web服务器(NanoHttpd)AndroidWebServer这是一个使用NanoHTTPD库创建Android Web服务器的示例项目。 用法要使Android Web Server在build.gradle文件中添加NanoHTTPD依赖项,请执行以下操作:编译'org.nanohttpd:nanohttpd:2.2.0'之后,您必须按以下方式创建Android Web Server类:public class AndroidWebServer扩展NanoHTTPD {public AndroidWebServer(int port){super(port); } public AndroidWebServer(String hostname,int port){su

Xilinx FPGA 10G Ethernet Subsystem example

The 10G Ethernet subsystem provides 10 Gb/s Ethernet MAC, Physical Coding Sublayer(PCS) and Physical Medium Attachment (PMA) transmit and receive functionality over anAXI4-Stream interface.

青城扬沙的博客 2379

C# 进阶:打造WinForms中的动态交互式UserControl

本文深入探讨了如何在C# WinForms中创建动态交互式UserControl,以提升桌面应用的用户体验和代码复用性。通过剖析UserControl生命周期、事件体系,并结合一个可拖拽缩放的分割面板实战案例,详细讲解了鼠标键盘事件处理、自定义绘制、状态管理以及性能优化等核心技巧,帮助开发者封装复杂交互逻辑,打造专业级自定义控件。

weixin_29279153的博客 460

Blender学习笔记——制作向量场

#下载Blender - UE4 - FGA Vector Field Editor插件的压缩包,Github上的下载地址如下:https://github.com/isathar/Blender_UE4_VectorFieldEditor #下载并解压后将FGA VectorFields文件夹复制到C:\Program Files\Blender Foundation\Blender 2.83\2.83\scripts\addons目录下,此步骤可根据blender安装的位置自行调整,只要放入addon

wychao2020的博客 1724

PowerBuilder 9 遗留系统逆向实战:3款反编译工具对比与关键DLL破解

本文深入探讨了PowerBuilder 9遗留系统的逆向工程实战,对比分析了PBKiller、PB DeCompiler和Shudepb三款反编译工具的核心功能与适用场景,并详细解析了关键DLL破解技术。通过IDA和OllyDbg等工具的应用,提供了从静态解构到动态追踪的完整逆向方法论,帮助开发者有效维护老旧PB系统。

cucanqi9387的博客 1378

基于Dify构建银行智能客服:从意图识别到多RAG架构的实战解析

本文深入解析了如何利用Dify平台构建银行智能客服系统。从传统客服痛点出发,详细阐述了基于意图识别精准分类用户需求,并通过多RAG架构解决知识混淆问题,实现高效、准确的业务响应。文章重点介绍了结合工具调用实现业务流程自动化,并强调了数据本地化部署、内容安全过滤等银行级安全合规实践,为金融行业AI应用提供了实战指南。

yog99的博客 926

2️⃣ Coze创建智能体教学(2025年全新版本)

扣子平台提供强大支持,可将智能体轻松集成至各类社交平台,使智能体得以服务更为庞大的用户群体。当下支持集成的平台如下:​1️⃣豆包:作为聚焦 AI 内容创作的平台,非常适合发布充满创意、娱乐性强的智能体。​2️⃣飞书:适合发布用于办公协作的智能体,助力团队提升工作效率。​3️⃣微信:借助公众号或小程序的形式,能够服务海量微信用户。​4️⃣抖音:适合发布与短视频相关的智能体,为用户提供创意与娱乐服务。​

李同学Lino的博客 4574

2023,程序员的出路在哪里?

可是似乎从30岁开始这工资就没涨过,前面跳槽几次涨的薪水在30岁以后跳槽已经不管用了、定格了,这几年由于市场环境不景气,程序员竞争越来越激烈,36岁跟30拿的工资一模一样,不仅工资拿的一样,反而事情还越来越多了,这些都意味着什么?处理故障需要的通常不仅仅是写代码的能力,还需要对一个系统的全貌要有一定的掌握。虽然目前不少大型互联网企业都在进行结构性调整,但是从互联网行业发展的基本面来看,未来在产业互联网发展的过程中,IT行业和传统行业将会释放出大量的就业岗位,所以未来程序员的发展空间还是非常值得期待的。

AI天才研究院 20万+

用Virtuoso和Abstract完成gds2lef

需要用到的工具有virtuoso和abstract。 数模混合的项目通常需要模拟完成模块设计,把接去数字的pin打上label(text),数字的floorplan才能正式开始。 如果只需要简单的数字PR boundary和pin点位置,那么只使用virtuoso就够了,还想把模拟版图都转成lef就要用到abstract工具。 1.PR boundary+pin 1)在virtuoso中打开layout a) Gui操作: Create->P&R Objects->

m0_61544122的博客 8738

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: Android实现WebServer(服务端)之AndServer
下一篇: 可能我撞了南墙也学不会kotlin协程吧
小红妹
博客等级 码龄10年 151粉丝 116原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值