用java写一个简易的本地聊天室

devtools/2025/3/25 9:46:25/

发送端

import java.io.IOException;
import java.net.*;
import java.util.Scanner;public class send {public static void main(String[] args) throws IOException {//1.创建对象datagramSocket的对象DatagramSocket ds = new DatagramSocket();//2.打包数据Scanner sc = new Scanner(System.in);while(true){System.out.println("输入");String str = sc.nextLine();if("exit".equals(str)){break;}byte[] bytes = str.getBytes("UTF-8");InetAddress address = InetAddress.getByName("192.168.122.18");int port = 10086;DatagramPacket dp = new DatagramPacket(bytes,bytes.length,address,port);//发送数据ds.send(dp);}//释放资源ds.close();}
}

接受端

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;public class receive {public static void main(String[] args) throws IOException {//1.创建对象DatagramSocket的对象DatagramSocket ds = new DatagramSocket(10086);//2.接受数据包byte[] bytes = new byte[1024];DatagramPacket dp = new DatagramPacket(bytes,bytes.length);while(true){ds.receive(dp);//3,解析数据包byte[] data = dp.getData();int len = dp.getLength();String ip = dp.getAddress().getHostName();String name = dp.getAddress().getHostName();//4.打印数据System.out.println("ip为:"+ip+",主机名为"+name+",的人,发送了数据:"+new String(data,0,len));}}
}

演示效果,虚拟机和宿主机相互连接

最终效果


http://www.ppmy.cn/devtools/170730.html

相关文章

stm32标准库开发需要的基本文件结构

使用STM32标准库(STM32 Standard Peripheral Library,SPL)开发时,项目中必须包含一些必要的文件,这些文件确保项目能够正常运行并与MCU硬件交互。以下详细说明: 一、标准库核心文件夹说明 使用标准库开发S…

HTML5 SVG 学习笔记

接将SVG元素嵌入HTML页面中。SVG元素是SVG图形的容器。 示例&#xff1a;SVG圆形 HTML复制 <svg xmlns"http://www.w3.org/2000/svg" version"1.1"><circle cx"100" cy"50" r"40" stroke"black" stro…

Touch Diver:Weart为XR和机器人遥操作专属设计的触觉反馈动捕手套

在虚拟现实&#xff08;VR&#xff09;和扩展现实&#xff08;XR&#xff09;领域&#xff0c;触觉反馈技术正逐渐成为提升沉浸感和交互体验的重要因素。Weart作为这一领域的创新者&#xff0c;凭借其TouchDIVER Pro和TouchDIVER G1触觉手套&#xff0c;为用户带来了高度逼真的…

Aider的Repo Map功能

在使用 Aider 时&#xff0c;Repo Map 默认只包含当前会话中明确指定的文件&#xff08;通过命令行传入的 fnames 或交互中添加的文件&#xff09;。要把整个项目的所有文件添加到 Repo Map 中&#xff0c;需要调整 Aider 的行为&#xff0c;让它扫描整个代码库并将所有文件纳入…

清晰易懂的 Swift 安装与配置教程

初学者也能看懂的 Swift 安装与配置教程 本教程将手把手教你如何在 macOS 系统上安装 Swift&#xff0c;配置依赖包缓存位置&#xff0c;并指出新手容易踩坑的细节。即使你是零基础小白&#xff0c;也能快速上手&#xff01; 一、安装 Swift&#xff08;macOS 环境&#xff09…

各种排序汇总

以下将详细介绍常见排序算法的排序过程&#xff0c;并给出对应的 C 代码实现。 1. 冒泡排序&#xff08;Bubble Sort&#xff09; 排序过程 比较相邻的元素。如果顺序错误&#xff08;如升序排序中前一个元素比后一个大&#xff09;&#xff0c;就把它们交换过来。对每一对相…

基于漂浮式海上风电场系统的浮式风力发电机matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于漂浮式海上风电场系统的浮式风力发电机matlab仿真&#xff0c;通过MATLAB数值仿真对浮式风力发电机的性能做模拟与仿真。 2.系统仿真结果 3.核心程序与模型 版本&#x…

linux 之 查看进程运行时长

背景 需要查看程序是否在一定时间内重启了&#xff0c;这就需要查看程序运行了多久。 命令 使用 top 命令查看对应进程的信息&#xff0c;TIME 一列显示进程累计使用CPU时间&#xff0c;并不是真正的运行时间。 相关命令: ps -p <pid> -o etime 可以看到这个程序已经运…