Java网络编程---UDP

news/2024/5/18 15:59:57 标签: 网络, java, udp

客户端

java">import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

public class Client {
    public static void main(String[] args) throws Exception {
        //1.创建客户端对象
        DatagramSocket socket = new DatagramSocket();
        //2.创建数据包对象封装要发出去的数据
        /* public DatagramPacket(byte buf[], int offset, int length,
        InetAddress address, int port)*/
        Scanner sc = new Scanner(System.in);
        while (true){
            //将数据转成字节
            System.out.println("user:");
            String msg = sc.nextLine();
            if ("exit".equals(msg)){
                System.out.println("退出成功!");
                socket.close();
                break;
            }
            byte[] bytes =msg.getBytes();
            DatagramPacket packet = new DatagramPacket(bytes, bytes.length,InetAddress.getLocalHost(),6666);
            //3.发送
            socket.send(packet);
        }
    }
}

服务端

java">import java.nio.charset.StandardCharsets;


import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class Server {
    public static void main(String[] args) throws Exception{
        System.out.println("----------服务端-----------");
        //1.创建一个服务端的对象
        DatagramSocket socket = new DatagramSocket(6666);

        //2.创建一个数据包对象  来接数据
        byte[] buffer = new byte[1024 * 64]; //64kb
        DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

        while (true){
            //接收数据
            socket.receive(packet);

            //打印出来
            int len = packet.getLength();
            String  rs =  new String(buffer,0,len, StandardCharsets.UTF_8);
            System.out.println(rs);


            //接收的客户端的信息
            System.out.println(packet.getAddress());
            System.out.println(packet.getPort());
            System.out.println("-----------------------------------------");
        }

    }
}

效果


http://www.niftyadmin.cn/n/5282519.html

相关文章

vue3组件通信(父给子传参,子调用父的方法,父调用子的方法,顶层组件给底层组件传参,底层组件调用顶层组件的方法)

目录 1.父传子(父给子传参) 2.子传父(子调用父的方法) 3.父调用子的方法 4.顶层给底层传参,底层调用顶层的方法 5.模板引用 1.父传子(父给子传参) ①.步骤 父组件中给子组件通过绑定属性…

1223西站坐标更新

1223 西站坐标更新 1.Update for the station’s location def initial_out_map_indoor_points(self):Load the indoor data and update both the wall_matrix and the ditch_matrix.# Initialize the wall_matrix# List of coordinatescoordinates [(417, 287, 417, 290),(4…

OpenCV-10mat的深浅拷贝

一.Mat介绍 mat是OpenCV是在C语言用来表达图像数据的一种数据结构,在Python转换为numpy的ndarray. mat是由header和date组成,header中记录了图片的维数、大小、数据类型等信息. 例如:cv2.imshow(winname, mat&#…

只用10分钟,ChatGPT就帮我写了一篇2000字文章

有了ChatGPT之后,于我来说,有两个十分明显的变化: 1. 人变的更懒 因为生活、工作中遇到大大小小的事情,都可以直接找ChatGPT来寻求答案。 2. 工作产出量更大 之前花一天,甚至更久才能写一篇原创内容,现…

k8s-node一键脚本扩容

k8s的node进行扩容,扩容的机器需要满足以下前提条件 1.无密登录配置 ssh-keygen -t rsa 2.hostsname修改,并添加集群列表到/etc/hosts 3.注意我的使用的nfs做的持久化存储,如果没有注意最后的步骤 #!/bin/bash #脚本运行之前准备工作 # # …

用 conda 搭建python 3.10.12 环境,并部署python项目

要使用 Conda 在您的系统上搭建一个 Python 3.10.12 环境,并部署 Python 项目,您可以按照以下步骤操作: 1. 创建新的 Conda 环境 首先,使用 Conda 创建一个新的环境,专门用于您的项目,其中包含 Python 3.…

【tcmalloc】(三)通用头文件的设计

用于记录不同模块所需的共同功能,例如头文件等 一.自由链表freelist 哈希桶节点上挂的自由链表,不同模块都会使用 //存放自由链表的下一个内存块地址的位置 static void*& NextObj(void* obj) {return *(void**)obj; //指针大小自动识别系统位数 }…

【数据结构】最短路径算法实现(Dijkstra(迪克斯特拉),FloydWarshall(弗洛伊德) )

文章目录 前言一、Dijkstra(迪克斯特拉)1.方法:2.代码实现 二、FloydWarshall(弗洛伊德)1.方法2.代码实现 完整源码 前言 最短路径问题:从在带权有向图G中的某一顶点出发,找出一条通往另一顶点…