当前位置: 首页 > news >正文

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

发送端

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));

        }


    }
}

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

最终效果

相关文章:

  • 使用vscode搭建pywebview集成vue项目示例
  • bonding技术
  • span与span之间的空白如何解决?
  • Shopify Checkout UI Extensions
  • 电阻的阻值识别
  • 数据结构5(初):排序
  • 【跟着灵神刷力扣】定长滑动窗口
  • 【动态规划】相关复习
  • python数据增强和转换
  • linux 设置tomcat开机自启动
  • 面试常问系列(一)-神经网络参数初始化
  • 大模型量化框架GPTQModel的基本使用方法
  • 【yolo】yolo训练报错,以及解决方案
  • Linux 线程概念
  • 2025.03.21首板涨停股票分析
  • nt!KeWaitForMultipleObjects函数分析之一个例子ExpWorkerThreadBalanceManager
  • 字节手撕题 小于 n 的最大整数 贪心 回溯 剪枝 全排列
  • 基于springboot的地方美食分享网站(全套)
  • 基于Flux模型的多模态可控图像生成工作流实践
  • 从零开始上手huggingface
  • 消息人士称俄方反对美国代表参加俄乌直接会谈
  • 定制基因编辑疗法治愈罕见遗传病患儿
  • 外交部:各方应为俄乌双方恢复直接对话创造条件
  • 5吨煤炭“瞬间蒸发”?掺水炭致企业损失千万,腐败窝案曝光
  • 第1现场 | 美国称将取消制裁,对叙利亚意味着什么
  • 京东CEO许冉:外卖日单量接近2000万单,看到外卖对平台拉动和转化效应