java监听端口接收数据包

news/2024/5/18 14:00:38 标签: java, udp

由于项目中还有其他程序,我是单独启动了一个线程来监听数据

java">public class TestUDPReceive implements Runnable{

    // 创建数据包传输对象DatagramSocket绑定端口号
    DatagramSocket ds;
    //创建字节数据
    byte[] data = new byte[1024];
    // 创建数据包对象,传递字节数组
    DatagramPacket dp;

    public TestUDPReceive(int port){
        try{
            ds = new DatagramSocket(port);
            dp = new DatagramPacket(data, data.length);
        }catch (SocketException e) {
            e.printStackTrace();
        }
    }


    @Override
    public void run() {
        while (true) {
            try {
                ds.receive(dp);
                //获取发送端的IP地址对象
                String ip = dp.getAddress().getHostAddress();
                int port = dp.getPort();

                //获取接收到的字节个数
                int length = dp.getLength();
                for(int i = 0;i < length;i++){
                    System.out.print(data[i] + ",");
                }
                System.out.println();
                System.out.println(ip + "-----------" + port + data.length);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

调用方法:

Thread thread = new Thread(new TestUDPReceive(8888));
thread.start();

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

相关文章

Java的类加载器和双亲委派机制简单介绍

Java的双亲委派机制是从JDK1.2开始就引入的&#xff0c;在了解该机制之前先得知道Java的类加载器&#xff0c; Java虚拟机中自带的几种类型类加载器&#xff1a; 启动&#xff08;Bootstrap&#xff09;类加载器&#xff1a;它负责将 <Java_Runtime_Home>/lib下面的类库加…

2.2进程状态转换

1.ps命令 ps是一个静态的命令&#xff0c;显示的是某一时刻的快照 上面STAT行的参数的意义&#xff1a; 2.top命令 输入q可以退出top命令。 3.kill命令 参考&#xff1a;牛客网 C高薪求职项目《Linux高并发服务器开发》2.2进程状态转换 专属优惠链接&#xff1a; https://w…

Linux服务器设置启动自动登录

我们很多时候都是远程操作服务器&#xff0c;有时候重启之后&#xff0c;需要让某个用户自动登录&#xff0c;这样可以为我们提供很大的便捷&#xff0c;那要怎么配置呢&#xff0c;其实也很简单。 如下操作&#xff1a; 第一步&#xff1a;修改/etc/passwd这个文件 找到这一行…

2.3进程创建

#include <unistd.h> pid_t fork(void);函数的作用&#xff1a;用于创建子进程返回值&#xff1a;fork会返回两次&#xff0c;一次在父进程中&#xff0c;一次在子进程中在父进程中返回创建的子进程的ID在子进程中返回0如何区分父进程和子进程&#xff1a;通过fork的返回…

2.4父子进程虚拟地址空间情况

内核区中&#xff0c;父进程和子进程的pid是不同的。 定义的局部变量pid在栈空间中&#xff0c;父子进程中栈空间中的pid不同&#xff0c;在父进程中为子进程的进程号&#xff0c;在子进程中为0 实际上&#xff0c;更准确来说&#xff0c;linux的fork()是通过写时拷贝&#x…

2.5父子进程关系及GDB多进程调试

1.父子进程之间的关系 父子进程之间的关系&#xff1a;区别&#xff1a;1.fork函数的返回值不同父进程中&#xff1a;>0&#xff0c;返回的是子进程的ID子进程中&#xff1a;02.pcb中的一些数据当前的进程的id pid当前的进程的父进程的id ppid信号集共同点&#xff1a;某些…

C#中list和数组对元素进行排序

直接看代码&#xff0c;都是用lamda表达式写的&#xff0c;比较简洁&#xff0c;其他方法也可以&#xff0c;不多赘述。 数组降序&#xff1a; Array.Sort(arr, (a, b) >{int temp b.id - a.id;if (temp > 0){return temp;}else {return -1;}});list降序&#xff1a; l…

makefile ‘/oracle/app/sysman/lib/ins_emagent.mk‘ 的目标 ‘agent nmhs‘ 时出错

安装Oracle11g数据库时&#xff0c;提示如下错误 调用 makefile ‘/oracle/app/sysman/lib/ins_emagent.mk’ 的目标 ‘agent nmhs’ 时出错。有关详细信息, 请参阅 ‘/tmp/logs/installActions2022-04-08_01-09-27PM.log’。 解决办法&#xff1a; 打开提示有问题的文件&#…