实现本地通讯(Java)

  • 1、接收包

  • package Char;import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.SocketException;public class TalkReceive implements Runnable{DatagramSocket socket=null;  //构造数据报套接字并将其绑定到本地主机上的任何可用端口。private int port;private  String msgFrom;public TalkReceive(int port, String msgFrom) {this.port = port;this.msgFrom=msgFrom;try {socket= new DatagramSocket(port); //构造数据报套接字并将其绑定到本地主机上的指定端口。} catch (SocketException e) {e.printStackTrace();}}@Overridepublic void run() {while (true) {try {//准备接收包裹byte[] container = new byte[1024];DatagramPacket packet = new DatagramPacket(container,0, container.length);//DatagramPacket(byte[] buf, int length)//构造一个 DatagramPacket用于接收长度的数据包 length 。socket.receive(packet);//阻塞式接收包裹//断开连接byte[] data = packet.getData();String receiveData = new String(data, 0, data.length);System.out.println(msgFrom + ":" + receiveData);if (receiveData.equals("bye")) {break;}} catch (IOException e) {e.printStackTrace();}}socket.close();}
    }
    
    • 2、发送包

      package Char;import java.io.BufferedReader;
      import java.io.InputStreamReader;
      import java.net.DatagramPacket;
      import java.net.DatagramSocket;
      import java.net.InetSocketAddress;public class TalkSend implements Runnable{DatagramSocket socket=null;   //构造数据报套接字并将其绑定到本地主机上的任何可用端口。BufferedReader reader=null;  //从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。private int  fromPort;private  String toIP;private  int toPort;//alt+insert创建构造器public TalkSend(int fromPort, String toIP, int toPort) {this.fromPort = fromPort;this.toIP = toIP;this.toPort = toPort;try {socket = new DatagramSocket(fromPort);reader= new BufferedReader(new InputStreamReader(System.in));//InputStreamReader(InputStream in)//创建一个使用默认字符集的InputStreamReader。//准备数据:控制台读取 System.in} catch (Exception e) {e.printStackTrace();}}@Overridepublic void run() {//run负责发送消息while (true){try{String data= reader.readLine();byte[] datas=data.getBytes();DatagramPacket packet=new DatagramPacket(datas,0,datas.length,new InetSocketAddress(this.toIP,this.toPort));//InetSocketAddress(InetAddress addr, int port)//从IP地址和端口号创建套接字地址。.//DatagramPacket(byte[] buf, int length, SocketAddress address)//构造用于发送长度的分组的数据报包 length指定主机上到指定的端口号。socket.send(packet);if (data.equals("bye")){break;}}catch (Exception e){e.printStackTrace();}}socket.close();}
      }
      
      • 3、执行窗口
  • package Char;public class TalkStudent {public static void main(String[] args) {//1.开启两个线程new Thread(new TalkSend(7777,"localhost",9999)).start();//从(来自,自己的端口)7777端口发出去、发给本地localhost这个人,发送到9999端口new Thread(new TalkReceive(8888,"老师")).start();//接收8888端口的消息,来自老师的消息}
    }
    
  • package Char;public class TalkTeacher {public static void main(String[] args) {new Thread(new TalkSend(5555,"localhost",8888)).start();//从(来自,自己的端口)5555端口,发给本地localhost这个人,学生在8888端口接收老师的消息new Thread(new TalkReceive(9999,"学生")).start();//接收9999端口的消息,来自学生的消息}
    }
    

大佬是如何实现本地通讯的?相关推荐

  1. 三菱FX3U 485ADP与4台欧姆龙E5cc温控器远程+本地通讯程序

    三菱FX3U 485ADP与4台欧姆龙E5cc温控器远程+本地通讯程序 功能:通过三菱fx3u 485ADP-MB板对4台欧姆龙E5cc温控器进行modbus通讯,可以实现温度在触摸屏上设置,也可以在 ...

  2. 微信小程序控制硬件第17篇 : 腾讯连连小程序通过LLSync蓝牙协议控制安信可PB-02模组,无需网络实现蓝牙本地通讯。(附带源码)

    文章目录 前言 一.注册腾讯物联开发平台设备 新建项目 新建产品 创建数据模板 选择设备开发方式 交互开发配置 新建设备 二.设备端操作 硬件简介与连接 准备软件环境 工程目录 烧录步骤 三.腾讯连连 ...

  3. ngro_k服务器搭建(本地电脑与微信交互)

    ​ ngrok 是一个反向代理的开源软件,至于为什么要使用ngrok,百度百科这样说: ​ 最近在学微信公众号开发,开发过程需要与微信的服务端交互,直接拿自己的电脑当然是不行的,因为我们的电脑连接的是 ...

  4. 容联云CFO李亦鹏:智能化、国产化大势所趋 多业务云通讯构筑行业壁垒

    万物互联时代,通讯协作方式发生了翻天覆地的变化.对于B端企业而言,通讯已成为像水.电一样的基础设施.相较本地部署大量硬件设施及消耗众多人力成本的传统通讯模式,基于云计算技术和服务模式的云通讯解决方案有 ...

  5. 国内云通讯渗透率不足3% 容联云SaaS业务迈入高速发展期

    万物互联时代,通讯协作方式发生了翻天覆地的变化.对于B端企业而言,通讯已成为像水.电一样的基础设施.相较本地部署大量硬件设施及消耗众多人力成本的传统通讯模式,基于云计算技术和服务模式的云通讯解决方案有 ...

  6. 趣谈计算机网络1 - 通讯协议综述

    前言: 本文为<趣谈网络协议>学习笔记,原文地址:趣谈网络协议_网络协议_网络编程-极客时间 一.概述 1. 商城购物的流程 a. 网络协议三要素 状态:200/404等 首部 内容 例子 ...

  7. MX-Yolov3本地训练模型的安装和使用

    MX-Yolov3本地训练模型的安装和使用 首先感谢CSDN的大佬的帮助: vott使用和数据集的制作请看这位大佬 MaixHub在线训练的使用看这 脚本运行和脱机运行看这里喔 MX-Yolov3环境 ...

  8. Java实现简单的本地QQ聊天系统

    利用Java编写的一个简单的群聊程序,模仿QQ群聊,利用本地通讯,实现了简单的群聊功能. 源码请自取: csdn资源下载传送门(免费) 程序共分为3个包 (先编译运行TerminalServerVie ...

  9. 通过阿里云物联网平台实现PLC间的远程通讯

    智能网关IGT-SER系列智能网关支持MQTT协议,方便将多台PLC设备的数据JSON格式发布/订阅.支持OneNET.阿里云等多种平台. 本案例是在异地的两台PLC通过智能网关对接阿里云的物联网平台 ...

最新文章

  1. The project you were looking for could not be found
  2. 比好莱坞市场大6倍—— 体育因数据分析而不同
  3. Google Progressive Web App简称PWA
  4. 【知识星球】有没有网络模型是动态变化的,每次用的时候都不一样?
  5. 个人作业收官——软件工程实践总结
  6. php执行zip压缩,PHP执行zip与rar解压缩方法实现代码
  7. Thrift框架使用C++的一个demo
  8. ssm校园帮代服务系统的设计与实现答辩PPT模板
  9. 【C++/C FAQ】如何输入和输出十六进制的整数
  10. pyinstaller相关错误
  11. MetaMask/metamask-extension/mascara 的运行实现
  12. NLTK学习笔记(六):利用机器学习进行文本分类
  13. matlab汽车驱动力与行驶阻力,最新汽车理论1.3和2.7matlab编程答案
  14. 软件测试用例朋友圈发表功能,微信发朋友圈测试用例
  15. 【硬见小百科】二极管和三极管的命名原则
  16. anaconda的默认位置修改pkgs以及默认创建环境踩坑
  17. css之@media网页适配
  18. 移动端适配iphoneX、iPhone XS、iPhone XS Max、iPhone XR方法
  19. 两大「宇宙中心」之争:未来科技城如何一步步落后奥体?
  20. 人到中年这种茶要多喝,越喝血管越干净!坚持一个月,头晕眼花不再来!

热门文章

  1. 浮动float的一些规则
  2. 写给程序员和UI--Android的切图标准
  3. cc++编译链接过程
  4. [ZT]Addison Wesley's Free Chapters and Articles
  5. AspNetForums 开发过程中的源代码管理
  6. linux屏蔽海外流量的两种方法
  7. 数据库系统原理简答题、论述题、判断题
  8. linux下普通用户账号管理
  9. VMware Workstation 常见问题解决
  10. The AC power adapter wattage and type cannot be determined. 解决方案