DatagramSocket类简单使用

DatagramSocket类简单使用importorg.junit.Test;importjava.io.*;importjava.net.DatagramPacket;importjava.net.DatagramSocket;importjava.net.InetSocketAddress;/***@author*@date2019/7/23*/publicclassTestUd…

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

import org.junit.Test;

import java.io.*;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

/**
 * @author
 * @date 2019/7/23
 */
public class TestUdp {

    /**
     * udp 发送数据:
     * 1.建立DatagramSocket通信,占用端口建立通信
     * 2.创建数据包DatagramPacket,指定数据包发向的端口,不会发生端口占用行为
     * 3.发送行为
     * 4.关闭通信
     *
     * @param
     * @return
     * @author
     * @date 2019/7/23 10:51
     */
    @Test
    public void udpSend() throws IOException {
        DatagramSocket datagramSocket = new DatagramSocket(9999);
        String msg = "msg msg66666666666666!";
        DatagramPacket datagramPacket = new DatagramPacket(msg.getBytes(), msg.getBytes().length, new InetSocketAddress("localhost", 6666));
        datagramSocket.send(datagramPacket);
        datagramSocket.close();
    }

    /**
     * udp 接收数据:
     * 1.建立通信DatagramSocket,占用端口建立通信。注意:该连接监听接收端口为发送一方的DatagramPacket的传输端口
     * 2.创建数据包DatagramPacket;仅作为接收数据的存储,无需再监听端口
     * 3.接收行为
     *  3.1 进入循环后receive方法在没有收到发送数据时进行堵塞,收到则通过
     *  3.2 接收的数据及接收数据的实际长度由获取到的实际数据包datagramPacket获取
     * 4.关闭通信
     *
     * @param
     * @return
     * @author
     * @date 2019/7/23 10:51
     */
    @Test
    public void udpRecive() throws IOException {
        DatagramSocket client = new DatagramSocket(6666);   //step 1
        byte[] bytes = new byte[1024];
        DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);
        int count = 0;
        while (count < 3) {
            System.out.println("into circle!");
            client.receive(datagramPacket);  //step 3.1
            System.out.println("passed receive!");
            byte[] data = datagramPacket.getData();     //step 3.2
            int length = datagramPacket.getLength();    //step 3.2

            System.out.println(count + "times received data:" + new String(data, 0, length));
            count++;
        }
        System.out.println("接收次数用完,退出程序!");
        client.close();
    }

}

流程总结:建立通信(对应释放通信动作),建立数据存储对象(包,缓冲区等),具体操作(关联通信与数据存储对象,再执行具体行为)

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

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

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


相关推荐

  • 静态路由调用BFD「建议收藏」

    静态路由调用BFD「建议收藏」BFD:双向转发检查作用:毫秒级故障检查,通常结合三层协议(如静态路由、vrrp、ospf、BGP等)实现链路故障快速检查R1<Huawei>system-view//进入全局模式[Huawei]sysnameR1//改名[R1]undoinfo-centerenable//关闭信息告警提示[R1]interfaceLoopBa…

    2022年9月25日
    5
  • UFW 修改before.rules等文件时reload无效

    UFW 修改before.rules等文件时reload无效

    2022年2月24日
    52
  • nest expression &amp; Pyparsing[通俗易懂]

    nest expression &amp; Pyparsing

    2022年1月24日
    51
  • git删除本地分支和远程分支_git删除远程分支

    git删除本地分支和远程分支_git删除远程分支git上面的分支开发完成以后,完成了他的历史使命,就可以删除了。1.删除本地分支查看本地分支gitbranchadd_jvm_config_and_exception_loghdfs_config_in_zk*mastersubBucket删除已经merge的本地分支gitbranch-dadd_jvm_config_and_exception_log…

    2022年10月9日
    4
  • 四种黑盒测试方法_八大心态的总结怎么写

    四种黑盒测试方法_八大心态的总结怎么写一、等价类划分法1.定义2.划分等价类2.1有效等价类2.2无效等价类3.划分等价类的标准4.划分等价类的方法5.设计测试用例6.三角形实例二、边界值分析法1.定义2.与等价划分的区别3.边界值分析方法的考虑4.常见的边界值5.边界值分析6.基于边界值分析方法选择测试用例的原则7.实例说明8、三角形问题的边界值分析测试用例三、错误推测方法1.定义2.错误推测方法的基本思想:四、因果图方法1.定义2.因果图法产生的背景:3.因果图介绍4.因果图概念5.采用因果图法设计测试用例的步.

    2022年10月3日
    1
  • 谈谈你对map的理解_java中map遍历

    谈谈你对map的理解_java中map遍历摘要:  HashMap是Map族中最为常用的一种,也是JavaCollectionFramework的重要成员。本文首先给出了HashMap的实质并概述了其与Map、HashSet的关系,紧接着给出了HashMap在JDK中的定义,并结合源码分析了其四种构造方式。最后,通过对HashMap的数据结构、实现原理、源码实现三个方面的剖析,深入到它底层Hash存储机…

    2025年9月3日
    8

发表回复

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

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