基于UDP的网络编程,DatagramSocket和DatagramPacket
发布日期:2022-02-01 14:28:21 浏览次数:41 分类:技术文章

本文共 1435 字,大约阅读时间需要 4 分钟。

1.概念

User Datagram Protocol的简称,用户数据包协议,提供面向事务的简单不可靠信息传送服务

特点:

a.不安全
b.无连接
c.效率高
d.UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内

2. DatagramSocket和DatagramPacket

DatagramSocket: 数据报套接字,表示用来发送和接收数据报包的套接字。

DatagramPacket:此类表示数据报包。每个包最大64kb
其中DatagramSocket中的receive()方法和TCP中的ServerSocket中的accept()方法都属于阻塞方法。

代码案例,双方收发文字消息:

//接收者:public class Receiver {    public static void main(String[] args) throws Exception {        DatagramSocket ds=new DatagramSocket(8888);//接收方必须指定具体端口号        System.out.println("准备接受...");        byte[] buf=new byte[1024*8];        DatagramPacket dp=new DatagramPacket(buf,buf.length);//传输的数据报包,最大64kb,        ds.receive(dp);//这里接收字节数组中数据        String string=new String(dp.getData(),0,dp.getLength());//将接受的数据包转换成字符串,从0开始,长度是数据包长度        System.out.println(string);//打印字符串数据        System.out.println("发件地址是"+dp.getAddress());//这里还可以通过数据报包来得到发送方地址        ds.close();//关闭        System.out.println("接收完毕");    }}//发送方public class Sender {    public static void main(String[] args) throws Exception {        DatagramSocket ds=new DatagramSocket();//发送方可以不指定端口号        Scanner sc=new Scanner(System.in);//控制台输入发送的消息        String date = sc.next();        DatagramPacket dp=new DatagramPacket(date.getBytes(),date.getBytes().length, InetAddress.getLoopbackAddress(),8888);//数据包中只能传输字节,要将输入的字符串传换成字节发送,在加上接收方的端口号        ds.send(dp);//发送数据报包        ds.close();        System.out.println("发送成功");    }}注意:启动的时候,先启动接收方,在启动发送方。

转载地址:https://blog.csdn.net/shunshizhen120412/article/details/99488446 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:基于TCP的网络编程 基于TCP的Scoket通讯模型
下一篇:NIO中Buffer的各种方法详解及其作用

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月14日 13时56分58秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

matlab里inline定义矩阵,Matlab中的inline函数_matlab中inline函数 2019-04-21
php html标签自定义属性,浅谈JS读取DOM对象(标签)的自定义属性 2019-04-21
如何使用matlab的siso,利用Matlab内建程式SISODesignTool完成系统分析(Matlab61)开启.PDF... 2019-04-21
php 实现 model层,Thinkhphp5控制器调用的Model层的方法总结 2019-04-21
matlab6.0序列号,MFC软件获取USB设备的制造商、产品、序列号 2019-04-21
matlab中多边形滤波器,几种常见空间滤波器MATLAB实现 2019-04-21
matlab fminimax 例子,Matlab应用实例(8)—fminimax 2019-04-21
php://filter利用条件,浅谈php://filter技巧 2019-04-21
mplayer-php,mplayer+smplayer 前后端播放器安装 2019-04-21
oracle昨日时间,。。今日,昨日,上周,本月,本年,按时间统计总金额 2019-04-21
php验证卡号,PHP验证信用卡卡号是否正确函数 2019-04-21
mpvue微信小程序动画_推荐两个微信小程序开发框架 2019-04-21
固态硬盘分为哪几种_零基础玩转固态硬盘 深度排雷 买SSD掌握这些就够了 2019-04-21
调python返回图片_Python异常处理,3个好习惯分享给你 2019-04-21
15拆解_收藏:15款劲芯微芯片无线充产品拆解 2019-04-21
弹出u盘_都说:U盘直接拔出不会丢失文件,“安全弹出”形同虚设,对吗? 2019-04-21
怎么查看elementui版本_2021新年 Vue3.0 + Element UI 尝鲜小记 2019-04-21
adreno630gpu参数_小米8搭载Adreno 630图形处理器 比荣耀play上的GPU Turbo更成熟 2019-04-21
带bitlocker解密的pe_如何在PE下解锁bitlocker 2019-04-21
lj245a引脚功能图_谁找到74254,74LS245芯片引脚的功能和功能图啊? 2019-04-21