JAVA TCP/IP Socket通信机制以及应用

关于局域网通信(同一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的阻塞问题,这个很烦,百度上有很多解决方法

原文地址:https://www.cnblogs.com/Ten10/p/Ten22.html