本例采用PC端做服务器端,android端做客户端,进行Socket通信;能进行群聊,并能上传android端的本地文件(图片)到PC端,PC端又将收到的文件转发给所有用户。

服务器端

新建Module

新建一个AndroidStudio工程,命名为SimpleChatRoom。为了方便,新建一个Module命名为Server,即服务器端。

Android studio socket接收数据的时间 android studio socket 客户端_Android聊天室

客户端

主要有两个页面,登录页面和聊天室

登录页面

Android studio socket接收数据的时间 android studio socket 客户端_聊天APP_02

是由两个EditText分别用于输入IP地址(服务器端)和端口号,还有一个Button,绑定点击事件用于进入聊天室组成的。

聊天室页面

Android studio socket接收数据的时间 android studio socket 客户端_课程设计_03

是由一个EditText用于输入要发送的信息,两个Button分别用来确定发送消息和打开本地相册选择要上传的图片,以及一个RecyclerView用于展现聊天记录(上图中未显示)组成的。

实现效果

客户端运行在PC端上,一个android真机和一个AndroidStudio上的虚拟机(这个虚拟机上系统都是英文的,时区为零时区,故隔了八个小时)作为两个客户端

聊天

Android studio socket接收数据的时间 android studio socket 客户端_课程设计_04


Android studio socket接收数据的时间 android studio socket 客户端_聊天APP_05

服务器端消息:

Android studio socket接收数据的时间 android studio socket 客户端_Android聊天室_06

传文件

将android真机上的图片上传到服务器,然后服务器将图片转发给用户(这里为了更好的体现效果,这里也将图片转发给原上传者)

android真机选择照片:

Android studio socket接收数据的时间 android studio socket 客户端_Android聊天室_07

上传到PC端:

Android studio socket接收数据的时间 android studio socket 客户端_android_08

聊天界面:(由于虚拟机的根目录不清楚,故未将图片转发给虚拟机)

Android studio socket接收数据的时间 android studio socket 客户端_android_09


Android studio socket接收数据的时间 android studio socket 客户端_Android聊天室_10


Android studio socket接收数据的时间 android studio socket 客户端_android_11

服务器端消息:

Android studio socket接收数据的时间 android studio socket 客户端_Android聊天室_12