大佬是如何实现本地通讯的?
实现本地通讯(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端口的消息,来自学生的消息} }
大佬是如何实现本地通讯的?相关推荐
- 三菱FX3U 485ADP与4台欧姆龙E5cc温控器远程+本地通讯程序
三菱FX3U 485ADP与4台欧姆龙E5cc温控器远程+本地通讯程序 功能:通过三菱fx3u 485ADP-MB板对4台欧姆龙E5cc温控器进行modbus通讯,可以实现温度在触摸屏上设置,也可以在 ...
- 微信小程序控制硬件第17篇 : 腾讯连连小程序通过LLSync蓝牙协议控制安信可PB-02模组,无需网络实现蓝牙本地通讯。(附带源码)
文章目录 前言 一.注册腾讯物联开发平台设备 新建项目 新建产品 创建数据模板 选择设备开发方式 交互开发配置 新建设备 二.设备端操作 硬件简介与连接 准备软件环境 工程目录 烧录步骤 三.腾讯连连 ...
- ngro_k服务器搭建(本地电脑与微信交互)
ngrok 是一个反向代理的开源软件,至于为什么要使用ngrok,百度百科这样说: 最近在学微信公众号开发,开发过程需要与微信的服务端交互,直接拿自己的电脑当然是不行的,因为我们的电脑连接的是 ...
- 容联云CFO李亦鹏:智能化、国产化大势所趋 多业务云通讯构筑行业壁垒
万物互联时代,通讯协作方式发生了翻天覆地的变化.对于B端企业而言,通讯已成为像水.电一样的基础设施.相较本地部署大量硬件设施及消耗众多人力成本的传统通讯模式,基于云计算技术和服务模式的云通讯解决方案有 ...
- 国内云通讯渗透率不足3% 容联云SaaS业务迈入高速发展期
万物互联时代,通讯协作方式发生了翻天覆地的变化.对于B端企业而言,通讯已成为像水.电一样的基础设施.相较本地部署大量硬件设施及消耗众多人力成本的传统通讯模式,基于云计算技术和服务模式的云通讯解决方案有 ...
- 趣谈计算机网络1 - 通讯协议综述
前言: 本文为<趣谈网络协议>学习笔记,原文地址:趣谈网络协议_网络协议_网络编程-极客时间 一.概述 1. 商城购物的流程 a. 网络协议三要素 状态:200/404等 首部 内容 例子 ...
- MX-Yolov3本地训练模型的安装和使用
MX-Yolov3本地训练模型的安装和使用 首先感谢CSDN的大佬的帮助: vott使用和数据集的制作请看这位大佬 MaixHub在线训练的使用看这 脚本运行和脱机运行看这里喔 MX-Yolov3环境 ...
- Java实现简单的本地QQ聊天系统
利用Java编写的一个简单的群聊程序,模仿QQ群聊,利用本地通讯,实现了简单的群聊功能. 源码请自取: csdn资源下载传送门(免费) 程序共分为3个包 (先编译运行TerminalServerVie ...
- 通过阿里云物联网平台实现PLC间的远程通讯
智能网关IGT-SER系列智能网关支持MQTT协议,方便将多台PLC设备的数据JSON格式发布/订阅.支持OneNET.阿里云等多种平台. 本案例是在异地的两台PLC通过智能网关对接阿里云的物联网平台 ...
最新文章
- The project you were looking for could not be found
- 比好莱坞市场大6倍—— 体育因数据分析而不同
- Google Progressive Web App简称PWA
- 【知识星球】有没有网络模型是动态变化的,每次用的时候都不一样?
- 个人作业收官——软件工程实践总结
- php执行zip压缩,PHP执行zip与rar解压缩方法实现代码
- Thrift框架使用C++的一个demo
- ssm校园帮代服务系统的设计与实现答辩PPT模板
- 【C++/C FAQ】如何输入和输出十六进制的整数
- pyinstaller相关错误
- MetaMask/metamask-extension/mascara 的运行实现
- NLTK学习笔记(六):利用机器学习进行文本分类
- matlab汽车驱动力与行驶阻力,最新汽车理论1.3和2.7matlab编程答案
- 软件测试用例朋友圈发表功能,微信发朋友圈测试用例
- 【硬见小百科】二极管和三极管的命名原则
- anaconda的默认位置修改pkgs以及默认创建环境踩坑
- css之@media网页适配
- 移动端适配iphoneX、iPhone XS、iPhone XS Max、iPhone XR方法
- 两大「宇宙中心」之争:未来科技城如何一步步落后奥体?
- 人到中年这种茶要多喝,越喝血管越干净!坚持一个月,头晕眼花不再来!