你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
首页
热门
推荐
精选
登录
|
注册
Android基于UDP的局域网聊天通信
立即下载
用AI写一个
金额:
4
元
支付方式:
友情提醒:源码购买后不支持退换货
立即支付
我要免费下载
发布时间:2017-12-03
191人
|
浏览:11650次
|
收藏
|
分享
技术:Android4.4+jdk1.8
运行环境:Android4.1以上(实测支持最新Android7.1)
概述
在同一局域网内,两台Android设备通过UDP进行实时的通讯,支持emoji,颜文字。
详细
> 记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + 演示效果 ### 1. 开发环境 #### 1.1 开发工具 - IDE:AndroidStudio 2.3 - 语言:java - jdk1.8 - 最低支持:Android4.1以上 #### 1.2 测试环境 - 实测: 红米4(android 6.0.1) 红米Note5A(android 7.1.2) 测试完美运行。 - 实现了两台Android设备在同一局域网内通过UDP进行实时的聊天通信。实测支持颜文字,emoji。 - 操作简单,输入需要连接的对方的ip地址,即可马上通讯。 ### 2. 演示效果 - 输入对方的IP地址 ![输入对方IP地址](/contentImages/image/20171201/fF80JpIeYa7hSPBHEls.jpg "输入对方IP地址") - 聊天界面 ![聊天界面](/contentImages/image/20171201/qW0iJLSg91UkAiHMEoj.jpg "聊天界面") - 支持滑动查看多条聊天记录 ![支持滑动查看多条聊天记录](/contentImages/image/20171201/kSzyylckHjD54GS35Cx.jpg "支持滑动查看多条聊天记录") ### 3. 代码实现过程 #### 3.1 界面代码 > 首先要写好聊天界面的代码 - 聊天界面只要是模仿类似QQ等常规聊天应用的界面 - 上方是一个TextView承载显示所有聊天内容,下方是内容输入框还有发送按钮。 - 如图: ![](/contentImages/image/20171201/SgZvuK0RWwq0SaX08ib.png) - 代码: ```xml
``` - **注意:为了使界面美观一些,我对按钮和上方的聊天记录显示区的background进行了设置,写了个圆角带边的shape来实现,具体下载demo代码可见。** #### 3.2 java逻辑实现 ##### 3.2.1 **基于UDP的Socket通信** > 使用DatagramSocket进行基于UDP的Socket通信 - 发送数据: ```java public void sendDataWithUDPSocket(String str) { try { InetAddress serverAddress = InetAddress.getByName(ipAddr); byte data[] = str.getBytes(); DatagramPacket packet = new DatagramPacket(data, data.length ,serverAddress ,10025); socket.send(packet); } catch (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } ``` 接收数据: ```java public void ServerReceviedByUdp(){ DatagramSocket socket; try { socket = new DatagramSocket(10025); while (true){ byte data[] = new byte[4*1024]; DatagramPacket packet = new DatagramPacket(data,data.length); socket.receive(packet); String result = new String(packet.getData(),packet.getOffset() ,packet.getLength()); if(!TextUtils.isEmpty(result)){ WordsEvent wordsEvent=new WordsEvent(result); EventBus.getDefault().post(wordsEvent); } System.out.println("收到信息为:"+result); } } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } ``` - 关闭Socket ```java public void disconnect(){ socket.close(); socket.disconnect(); } ``` ##### 3.2.2 Manifests清单文件 - 网络相关的权限声明: ```xml
``` - ** activity加以下属性避免软键盘弹出时界面压缩和遮挡条提案内容输入框** ```xml android:windowSoftInputMode="stateHidden|stateAlwaysHidden|stateUnspecified|adjustPan" ``` ##### 3.2.3 IP地址合法性判断 > 使用正则表达式判断用户输入的IP地址的合法性 - 利用java API中的Patern,Matcher等类,使用正则表达式实现。 - 具体下载demo看源码。 ### 4.项目文件结构截图 ![文件结构](/contentImages/image/20171201/RRDwqmQFmdHBzxWKchU.png "文件结构") ### 5. 博客链接 [地址:http://blog.csdn.net/alanjet/article/details/78690594](http://blog.csdn.net/alanjet/article/details/78690594)
本实例支付的费用只是购买源码的费用,如有疑问欢迎在文末留言交流,如需作者在线代码指导、定制等,在作者开启付费服务后,可以点击“购买服务”进行实时联系,请知悉,谢谢
感谢
8
手机上随时阅读、收藏该文章 ?请扫下方二维码
相似例子推荐
评论
作者
alanjet
1
例子数量
191
帮助
8
感谢
评分详细
可运行:
4.3
分
代码质量:
4.3
分
文章描述详细:
4.3
分
代码注释:
4.3
分
综合:
4.3
分
作者例子
Android基于UDP的局域网聊天通信