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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • NestedScrollView+Viewpager+Recycleview的滑动冲突

    NestedScrollView+Viewpager+Recycleview的滑动冲突最新业务需求变化 一个页面多个 Recycleview Viewpager viewpager 实现左右滑动 且可以手动滑动 页面逻辑简单 就是数据比较大 最初的时候实现有滑动冲突 后边使用 NestedScroll 可以实现滑动 但是 Viewpager 不能实现手动滑动 Recycleview 的 item 事件冲突 这个只在华为 7 0 手机上出现 华为 8 0 及三星手机上未发现问题 网上也是各种找 后边看

    2025年7月3日
    0
  • Redis中主、从库宕机如何恢复?

    Redis中主、从库宕机如何恢复?

    2022年2月20日
    31
  • rolling在舞蹈里是什么意思_机械舞和街舞有啥区别

    rolling在舞蹈里是什么意思_机械舞和街舞有啥区别原标题:这,就是街舞中的那些“Swag”十足的舞蹈类型,你了解吗?世界越来越小了,人们越靠越近,视野越来越广,局限于逼仄的小空间的时代已经一去不复返了。现在,一推门,迎面就是全世界。自去年开始,嘻哈文化开始通过综艺节目进入公众视野(中国有嘻哈),这种来自大洋彼岸的“陌生文化”随即引起了广泛的关注。尽管作为“第一个吃螃蟹的人”,《中国有嘻哈》的最终结果不尽如人意,但却为后来的综艺制作人提供了全新的视…

    2025年5月28日
    0
  • linux tar压缩文件命令,tar打包压缩文件命令

    linux tar压缩文件命令,tar打包压缩文件命令tar命令tar命令用于将多个文件合成1个文件,wiki中把这个命令和cpio、shar等一起叫做archive文件,个人理解是归档,合成一个文件,后就可以用gzip、bz2、xz等工具进行压缩,同时也能方便在各个计算机间传输,有点类似windows下共享的zip文件。wiki上这个图比较形象,tar把零散的文件合拢,gzip把合拢的文件压缩。一、命令语法tar[选项…][FILE]…..

    2022年5月22日
    43
  • cglib动态代理实现原理_jdk cglib 动态代理 区别

    cglib动态代理实现原理_jdk cglib 动态代理 区别cglib动态代理详解我们都知道jdk的动态代理内部调用切面无效的问题,而cglib则不会出现这种情况,这是为什么?cglib就一定不会出现内部调用切面无效的问题吗?cglib针对每一个类只创建了一个代理类吗?为什么cglib的效率要比jdk的动态代理低呢?首先我们看一下通常我们是如何使用cglib增强一个类的publicclassMain{staticclassTest{publicvoidtest(){System.out.pr

    2022年10月21日
    0
  • c语言图书管理系统案例实训_c语言实现图书馆系统

    c语言图书管理系统案例实训_c语言实现图书馆系统本次案例需要三个文件来运行分别是StuManage.h//头文件、StuManage.c//函数定义和main.c//测试文件#include<stdio.h>#ifndefSTUMANA_STUMANA_H#defineSTUMANA_STUMANA_Htypedefstructbook{charbnum[10];charbname[30];charbauthor[20];charbclassfy[10];floatbprice;.

    2022年10月9日
    1

发表回复

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

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