基于局域网的视频聊天系统--蛙酷
摘要:随着无线网络的发展,支持Wi-Fi的电子产品越来越多,与Wi-Fi绑定的应用也层出不穷,但还没有一款基于Wi-Fi的视频聊天软件能够满足人们的日常交互需求,因此我们开发出“蛙酷”,一款基于局域网的视频聊天软件,能够在局域网覆盖下实现随时随地视频聊天和视频会议,且无需耗费任何手机数据流量,真正给用户带来了随聊随见的交互体验。
本文引用地址:https://www.eepw.com.cn/article/267433.htm1 引言
目前,社会所流行的聊天软件所专注的问题仅限于视频效果和软件盈利上,应用目的趋于商业化,而没有真正从用户的角度出发去设计开发软件,由于视频通讯不同于文字通讯和语言通讯,传输信息量大且十分耗费数据流量,导致用户想用能用却不敢用。基于这一点,我们提出了“蛙酷”,这是一款基于无线局域网的视频聊天软件,主要包含在线视频聊天和视频组播功能,用户可以使用这款软件与同一局域网内的任意一位好友随时随地进行视频通讯,也可邀请多名好友开启在线视频会议。这款软件最大的特性在于我们能够通过访问局域网的方式来满足各种交互需求且节省数据流量,适用于高校、企业、商城以及其它有无线局域网覆盖的各大场所,这款软件简单实用,稳定的后台服务能够让用户随时随地与好友进行视频通讯。
2 成果展示及介绍
2.1 主界面
如图1所示。
2.2 系统架构
(1)视频聊天 一方客户端发出邀请(发送IP及端口),然后服务器在此局域网内检索该IP地址,一旦检索到即锁定IP并发送端口号,接收端接收到邀请后,即做出应答(接受/拒绝),拒绝则关闭连接,接受则开启连接并互相发送数据给对方,实现视频聊天。
(2)视频会议 由发送端客户端开启视频会议号(组播IP地址段),开启时即开始发送数据到服务器端(不管有没有终端客户端连入),开启组播后,多个终端客户端可以通过加入同一组播IP而开始接收发送端发送的数据信息,实现视频会议。
3 详细分析硬件与软件模块
3.1 Wi-Fi
3.1.1 Wi-Fi程序模块
(1)开源库wpa_supplicant
一个开源库,加入到Android源码中,经过修改后成为Android实现Wi-Fi功能的基础。它的代码位于./external/wpa_supplicant文件夹中,主要用C和C++写成,实现了从上层接到命令后,发送给硬件驱动程序,接着操作硬件完成需要的操作,这里是通过socket来与硬件驱动进行通信的。
(2)硬件驱动程序
前文所说的wpa_supplicant,与之通信的硬件驱动的代码位于./hardware/libhardware_legacy/wifi/wifi.c中。
(3)JNI部分
首先简要介绍一下JNI,JNI是JavaNativeInterface的缩写,它实现了Java代码与其他代码进行交互,使得在Java虚拟机中运行的Java代码能够与用其他语言编写的应用程序和库进行交互。在Android中,JNI可以让Java程序调用C程序。
与Wi-Fi相关的JNI代码位于./frameworks/base/core/jni/android_net_wifi_Wifi.cpp中。
(4)Wi-Fi API部分
这部分源代码使用Java完成了对Wi-FiAPI的封装,使应用程序可以使用Wi-Fi功能,它们位于frameworks/base/services/java/com/android/server/和frameworks/base/wifi/java/android/net/wifi/中。
c++相关文章:c++教程
评论