• 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的阻塞问题,这个很烦,百度上有很多解决方法

  • 相关阅读:
    什么是webview
    juqery.fn.extend和jquery.extend
    LeetCode
    5. Longest Palindromic Substring
    42. Trapping Rain Water
    11. Container With Most Water
    621. Task Scheduler
    49. Group Anagrams
    739. Daily Temperatures
    3. Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/Ten10/p/Ten22.html
Copyright © 2020-2023  润新知