“line“

服务端

package work;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.util.ArrayList;
import java.util.List;
 
public class UDPServer {
    private static final int PORT = 9876;
    private static List<ClientInfo> clients = new ArrayList<>();
 
    public static void main(String[] args) {
        try {
            DatagramSocket socket = new DatagramSocket(PORT);
 
            System.out.println("UDP 服务器在端口上运行 " + PORT);
 
            while (true) {
                byte[] receiveData = new byte[1024];
                DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                socket.receive(receivePacket);
 
                String message = new String(receivePacket.getData(), 0, receivePacket.getLength());
                System.out.println("收到来自 " + receivePacket.getAddress() + ": " + message);
 
                // Broadcast message to all clients
                broadcastMessage(message, receivePacket.getAddress(), receivePacket.getPort());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    private static void broadcastMessage(String message, java.net.InetAddress address, int port) {
        for (ClientInfo client : clients) {
            try {
                DatagramSocket clientSocket = new DatagramSocket();
                byte[] sendData = message.getBytes();
                DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, client.getAddress(), client.getPort());
                clientSocket.send(sendPacket);
                clientSocket.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
 
    private static class ClientInfo {
        private java.net.InetAddress address;
        private int port;
 
        public ClientInfo(java.net.InetAddress address, int port) {
            this.address = address;
            this.port = port;
        }
 
        public java.net.InetAddress getAddress() {
            return address;
        }
 
        public int getPort() {
            return port;
        }
    }
}

客服端

package work;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
 
public class TCPClient {
 
    public static void main(String[] args) {
        final String serverAddress = "localhost";
        final int serverPort = 12345;
 
        try (Socket socket = new Socket(serverAddress, serverPort)) {
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
 
            // 从服务器接收消息并显示
            new Thread(() -> {
                try {
                    String message;
                    while ((message = reader.readLine()) != null) {
                        System.out.println("服务器: " + message);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }).start();
 
            // 从控制台读取输入并发送给服务器
            BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
            String consoleInput;
            while ((consoleInput = consoleReader.readLine()) != null) {
                writer.println(consoleInput);
            }
 
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
 

客户端

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.util.ArrayList;
import java.util.List;
 
public class UDPServer {
    private static final int PORT = 9876;
    private static List<ClientInfo> clients = new ArrayList<>();
 
    public static void main(String[] args) {
        try {
            DatagramSocket socket = new DatagramSocket(PORT);
 
            System.out.println("UDP Server is running on port " + PORT);
 
            while (true) {
                byte[] receiveData = new byte[1024];
                DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                socket.receive(receivePacket);
 
                String message = new String(receivePacket.getData(), 0, receivePacket.getLength());
                System.out.println("Received from " + receivePacket.getAddress() + ": " + message);
 
                // Broadcast message to all clients
                broadcastMessage(message, receivePacket.getAddress(), receivePacket.getPort());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    private static void broadcastMessage(String message, java.net.InetAddress address, int port) {
        for (ClientInfo client : clients) {
            try {
                DatagramSocket clientSocket = new DatagramSocket();
                byte[] sendData = message.getBytes();
                DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, client.getAddress(), client.getPort());
                clientSocket.send(sendPacket);
                clientSocket.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
 
    private static class ClientInfo {
        private java.net.InetAddress address;
        private int port;
 
        public ClientInfo(java.net.InetAddress address, int port) {
            this.address = address;
            this.port = port;
        }
 
        public java.net.InetAddress getAddress() {
            return address;
        }
 
        public int getPort() {
            return port;
        }
    }
}

服务端

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
 
public class UDPClient {
    private static final int PORT = 9876;
 
    public static void main(String[] args) {
        try {
            Scanner scanner = new Scanner(System.in);
            System.out.print("Enter your name: ");
            String name = scanner.nextLine();
 
            DatagramSocket socket = new DatagramSocket();
            InetAddress serverAddress = InetAddress.getByName("localhost");
 
            Thread receiveThread = new Thread(() -> {
                try {
                    byte[] receiveData = new byte[1024];
                    DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
 
                    while (true) {
                        socket.receive(receivePacket);
                        String message = new String(receivePacket.getData(), 0, receivePacket.getLength());
                        System.out.println(message);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
 
            receiveThread.start();
 
            while (true) {
                String message = scanner.nextLine();
                String formattedMessage = name + ": " + message;
                byte[] sendData = formattedMessage.getBytes();
                DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, serverAddress, PORT);
                socket.send(sendPacket);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/227635.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小航助学2023年6月GESP_Scratch一级真题(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号 单选题3.00分 删除编辑附件图文 答案:A 第1题以下不属于计算机输出设备的有&#xff08; &#xff09;。 A、麦克风B、音箱C、打印机D、显示器 答案解析&#xff1a; 单选…

机器学习之全面了解模型验证

本专栏我们将和大家一起探讨机器学习与数据科学的主题&#xff0c;解释相关背景知识&#xff0c;并就一些来自社区的问题进行解答。 本文主要介绍模型验证及其相关主题&#xff0c;如过拟合和超参数调优。我将概括介绍该主题及其重要性&#xff0c;然后探讨以下四个问题&#…

HarmonyOS系统架构及项目结构浅析

语雀知识库地址&#xff1a;语雀HarmonyOS知识库 飞书知识库地址&#xff1a;飞书HarmonyOS知识库 基本概念 UI框架 HarmonyOS提供了一套UI开发框架&#xff0c;即方舟开发框架&#xff08;ArkUI框架&#xff09;。方舟开发框架可为开发者提供应用UI开发所必需的能力&#xf…

Vulnerability: File Upload(low)--MYSQL注入

选择难度&#xff1a; 1.打开DVWA&#xff0c;并登录账户 2.选择模式&#xff0c;这里我们选择 文件上载的最低级模式&#xff08;low&#xff09; 在vsc里面写个一句话木马 这里我们注意&#xff0c;因为这个是木马很容易被查杀&#xff0c;从而无法使用&#xff0c;所以我们…

uni-app 微信小程序之好看的ui登录页面(三)

文章目录 1. 页面效果2. 页面样式代码 更多登录ui页面 uni-app 微信小程序之好看的ui登录页面&#xff08;一&#xff09; uni-app 微信小程序之好看的ui登录页面&#xff08;二&#xff09; uni-app 微信小程序之好看的ui登录页面&#xff08;三&#xff09; uni-app 微信小程…

Chrome浏览器禁止更新策略

在做爬虫过程中&#xff0c;需要用到Selenium驱动浏览器去做动态爬虫 这里我一般用到的是Chrome谷歌浏览器进行爬虫 但是&#xff0c;目前python和Chrome浏览器适配最好的是110.版本 尽管我用了很多种方法 去取消浏览器自动更新 但是 过一段时间 浏览器总是会自动更新到最新…

Excel 表列序号

题目链接 Excel 表列序号 题目描述 注意点 columnTitle 仅由大写英文组成1 < columnTitle.length < 7 解答思路 对于"CAB"&#xff0c;计算其序列号的思路&#xff1a;字母B的贡献值为2&#xff0c;字母A的贡献值为1 * 26&#xff0c;字母C的贡献值为3 * …

Java 简易版 TCP(一对一)聊天

客户端 import java.io.*; import java.net.Socket; import java.util.Date; import javax.swing.*;public class MyClient {private JFrame jf;private JButton jBsend;private JTextArea jTAcontent;private JTextField jText;private JLabel JLcontent;private Date data;p…

使用Python实现轮盘赌选择法Roulette Wheel Selection Method in Python

一、引言 最近在手写遗传算法&#xff0c;想尝试解决一些优化问题。然而&#xff0c;在编码的过程中&#xff0c;自己发现了很多都不懂的问题。比如&#xff0c;交叉的操作&#xff0c;有单点交叉、两点交叉和多点交叉&#xff0c;具体选哪一种会更好呢&#xff1f;未知。还有交…

探索Spring事件监听机制的奇妙世界

文章目录 什么是Spring事件监听机制主要组件内置的事件监听类自定义事件监听类总结 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 什么是Spring事件监听机制 Spring事件监听机制是Spr…

【Java基础系列】Cron表达式入门

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

12月7日作业

pp登录界面 widget.cpp #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口设置this->setWindowTitle("pp"); //窗口名为ppthis->setWindowIcon(QIcon("C:\\Users\\86198\\Desktop\\tubiao\\pictrue\\kunkun.webp…

Implicit Neural Representation for Cooperative Low-light Image Enhancement

GitHub - Ysz2022/NeRCo: [ICCV 2023] Implicit Neural Representation for Cooperative Low-light Image Enhancement 参考&#xff1a;ICCV2023 | 将隐式神经表征用于“低光增强”&#xff0c;北大张健团队提出NeRCo (qq.com) 以下三个因素限制了现有低光图像增强方法的应用…

Stable Diffusion AI绘画系列【20】:美丽动人的雀羽婚纱风,你心动了吗?

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

大数据项目——基于Django/协同过滤算法的房源可视化分析推荐系统的设计与实现

大数据项目——基于Django/协同过滤算法的房源可视化分析推荐系统的设计与实现 技术栈&#xff1a;大数据爬虫/机器学习学习算法/数据分析与挖掘/大数据可视化/Django框架/Mysql数据库 本项目基于 Django框架开发的房屋可视化分析推荐系统。这个系统结合了大数据爬虫、机器学…

【Python】Faker库详解:创建测试数据轻而易举

Python Faker库详解&#xff1a;创建测试数据轻而易举 在软件开发和测试过程中&#xff0c;通常需要大量的测试数据来模拟真实环境。Python的Faker库为开发者提供了一个方便、灵活且强大的工具&#xff0c;用于生成各种虚构数据。本文将深入介绍Faker库&#xff0c;演示其基本…

【Linux】Java 程序员必会的 Linux 最常用的命令

文章目录 lsllpwdcdtouchcatechomkdirtreermmvcpvimgreppsnetstat 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4d5; JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 &#x1f4d7; Java数据结构: 顺序表, 链…

【Android】查看keystore的公钥和私钥

前言&#xff1a; 查看前准备好.keystore文件&#xff0c;安装并配置openssl、keytool。文件路径中不要有中文。 一、查看keystore的公钥&#xff1a; 1.从keystore中获取MD5证书 keytool -list -v -keystore gamekeyold.keystore 2.导出公钥文件 keytool -export -alias …

C#winform上下班打卡系统Demo

C# winform上下班打卡系统Demo 系统效果如图所示 7个label控件(lblUsername、lblLoggedInEmployeeId、lab_IP、lblCheckOutTime、lblCheckInTime、lab_starttime、lab_endtime)、3个按钮、1个dataGridView控件、2个groupBox控件 C#代码实现 using System; using System.Dat…

极狐GitLab 和 ArgoCD 集成实现 GitOps

目录 ArgoCD 和 GitOps 概述 极狐GitLab 与 ArgoCD 的集成 ArgoCD 的安装 sops 介绍 探秘 gpg sops 和 gpg 的结合 ArgoCD 的使用 极狐GitLab 仓库的添加 gpg public key 的添加 ArgoCD Project 创建 ArgoCD Project 配置 ArgoCD GitOps workflow 验证 ArgoCD 和 Gi…
最新文章