关于局域网通信(同一wifi下,自己电脑当服务端,同一网络段)
1.例如192.168.1.x,只有x位不相同视为同一网络段
2.当具备了以上条件,即可编写服务端代码,服务端的机制。
3.ServerSocket s = new ServerSocket(8888); //监听8888端口
4.开启线程,加入读写消息流。
5.读取每一个用户的消息,写入每一个用户
客户端
1.打开cmd,查询自己电脑所在IP地址(当做服务端的电脑),博主连接的是WiFi,查到的IP为192.168.1.135
2.编写客户端,客户端和服务器的机制相同
3.Socket s = new Socket("192.168.1.135",8888);
4.开启与服务端交互的线程,加入读写消息流.
5.发送消息,并读取服务器发来的消息,显示在消息面板上
关于广域网通信(首先你得买个服务器,这里买的是腾讯云1元学生专用)
1.买了服务器后,邮件里面会收到一个ip,和远程桌面
2.连接远程桌面,并将自己的JAVA服务端打包成.jar文件,带上JDK的jre运行环境,放在jar文件同一目录下
在远程桌面上运行这个服务端,具体命令为java -jar xx.jar
3.和局域网通信一致,不同的只要IP改为服务端的IP就行了
4.这样无论你用什么网络都可以实现通信机制了
关于安卓客户端之间通信,安卓客户端和电脑之间通信
1.当有了服务器之后,通信问题基本解决,方法极其类似
2.唯一不同的就是,安卓线程问题,还有安卓配置文件里面需要加入联网权限
3.安卓不允许网络线程在主线程里面操作,所以你得new另外一个线程实现socket
4.安卓很难实现长连接,基本都是靠每一次操作new 一个socket 用完后close
5.可以考虑JNI,博主使用的方法是第4点提到的
6.一般来说,需要开启三个线程,读消息,写消息,将消息绘制在UI界面上
7.在这里有很多坑,我想说一下readLine的阻塞问题,这个很烦,百度上有很多解决方法