java的UDP通信[通俗易懂]

java的UDP通信[通俗易懂]importjava.io.IOException;importjava.net.DatagramPacket;importjava.net.DatagramSocket;/*UDP接收

大家好,又见面了,我是你们的朋友全栈君。


import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

/*
    UDP接收数据:
        因为接收端不知道发送端什么时候停止发送,故采用死循环接收
 */
public class ReviceUdp {
    public static void main(String[] args) throws IOException {
        //创建接收端的Socket对象(DatagramSocket)
        DatagramSocket ds = new DatagramSocket(12345);

        while (true) {
            //创建一个数据包,用于接收数据
            byte[] bys = new byte[1024];
            DatagramPacket dp = new DatagramPacket(bys, bys.length);

            //调用DatagramSocket对象的方法接收数据
            ds.receive(dp);

            //解析数据包,并把数据在控制台显示
            System.out.println("数据是:" + new String(dp.getData(), 0, dp.getLength()));
        }

        //关闭接收端
//        ds.close();
    }
}

package mystring.demo2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/*
    UDP发送数据:
        数据来自于键盘录入,直到输入的数据是886,发送数据结束
 */
public class SendUdp {
    public static void main(String[] args) throws IOException {
        //创建发送端的Socket对象(DatagramSocket)
        DatagramSocket ds = new DatagramSocket();

        //自己封装键盘录入数据
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line;
        while ((line = br.readLine()) != null) {
            //输入的数据是886,发送数据结束
            if ("886".equals(line)) {
                break;
            }

            //创建数据,并把数据打包
            byte[] bys = line.getBytes();
            DatagramPacket dp = new DatagramPacket(bys, bys.length, InetAddress.getByName("LAPTOP-9D3ST92M"), 12345);

            //调用DatagramSocket对象的方法发送数据
            ds.send(dp);
        }

        //关闭发送端
        ds.close();
    }
}


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155247.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • STP协议详解_STP

    STP协议详解_STP1、生成树技术背景交换机单线路上联,存在单点故障,上行线路及设备都不具备冗余性,一旦链路或上行设备发生故障,业务将会中断。为了使得网络更加健壮、更具有冗余性,将拓扑修改为如下图所示。接入层交换机采用双链路上联到两台汇聚设备,构成一个物理链路冗余的二层环境,解决了单链路及单设备故障问题。但是这样也带来了一个大问题,就是二层物理环境存在环路。二层环路的危害是严重的,有可能会导致广播…

    2025年6月1日
    0
  • SQL Server 2019基础配置

    SQL Server 2019基础配置SQLServer2019基础配置1、在开始菜单中选中安装的SQLServer2019配置管理器,打开。2、点击SQLServer网络配置->MSSQLSERVER的协议->启用TCP/IP协议。示例:3、启动管理应用。示例:4、默认直接点击连接即可。示例:5、发现有如图所示的结果表示连接成功。示例:6、单击->右键->属性。示例:7…

    2022年7月20日
    12
  • BroadcastReceiver的生命周期

    BroadcastReceiver的生命周期

    2021年8月30日
    56
  • ROS机器人里程计模型

    ROS机器人里程计模型3.5移动机器人系统模型相信大家的机器人平台STM32端底层控制和机器人urdf建模都已经顺利完成了,在正式开始ros端编写机器人启动功能包之前,我们还不得不学习一些必要的理论知识。别担心数学不好,这里基本都是高中数学。下面我们开始,Areyouready?没准备好也开始了。3.5.1常用坐标系系统模型在移动机器人技术研究中,最为常用的坐标系统是笛卡尔坐标系统。而在SLAM算法研究中,有如下几个比较常见的笛卡尔坐标系统,它们分别为机器人坐标系XRYROR、传感器坐标系XSYSOS

    2022年6月30日
    26
  • glPushMatrix 与 glPopMatrix[通俗易懂]

    glPushMatrix 与 glPopMatrix[通俗易懂]1.原理讲解 终于明白为什么使用glPushMatrix()和glPopMatrix()的原因了。将本次需要执行的缩放、平移等操作放在glPushMatrix和glPopMatrix之间。glPushMatrix()和glPopMatrix()的配对使用可以消除上一次的变换对本次变换的影响。使本次变换是以世界坐标系的原点为参考点进行。下面对上述结论做进一步的解释:1)OpenGL中

    2022年10月28日
    0
  • pycharm为什么有中文就运行不了_电脑右下角输入法图标不见了

    pycharm为什么有中文就运行不了_电脑右下角输入法图标不见了系统版本:Ubuntu16.04PyCharm版本:PyCharm2020.3.3(CommunityEdition)1、在pycharm安装目录bin下的pycharm.sh中,添加如下几行:ibus类型的输入法添加:exportGTK_IM_MODULE=ibusexportQT_IM_MODULE=ibusexportXMODIFIERS=@im=ibusfcitx类型的输入法添加:exportGTK_IM_MODULE=fcitxexportQT_IM_MODU

    2022年8月28日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号