Java Socket笔记-udpSocket简单收发包

Java Socket笔记-udpSocket简单收发包目录基本概念代码与实例基本概念这里主要是使用了 DatagramSock 可以打开本地端口 构建 Socket 同时这个类还可以给指定 IP 和端口发送数据包 如下 打开本地端口并接收数据 DatagramSock newDatagramS 2000 构建接收实体 finalbyte buf newbyte 512

目录

 

基本概念

代码与实例


 

基本概念

这里主要是使用了DatagramSocket可以打开本地端口,构建Socket,同时这个类还可以给指定IP和端口发送数据包。

如下,打开本地端口并接收数据:

DatagramSocket ds = new DatagramSocket(2000); //构建接收实体 final byte[] buf = new byte[512]; DatagramPacket receiverPack = new DatagramPacket(buf, buf.length); //接收 ds.receive(receiverPack);

接收到的数据会传给receiverPack。

同样如果是发送

DatagramPacket responsePacket = new DatagramPacket(responseDataBytes, responseDataBytes.length, receiverPack.getAddress(), receiverPack.getPort()); ds.send(responsePacket);

通过构造DatagramPacket指明IP和端口,就可以发送数据了

 

代码与实例

程序运行截图如下:

Java Socket笔记-udpSocket简单收发包

Java Socket笔记-udpSocket简单收发包

源码如下:

UDPProvider.java

import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDPProvider { public static void main(String[] args) throws IOException { System.out.println("UDPProvider Started."); //接收者,指定接收数据 DatagramSocket ds = new DatagramSocket(2000); //构建接收实体 final byte[] buf = new byte[512]; DatagramPacket receiverPack = new DatagramPacket(buf, buf.length); //接收 ds.receive(receiverPack); //打印发送者信息 String ip = receiverPack.getAddress().getHostAddress(); int port = receiverPack.getPort(); int dataLen = receiverPack.getLength(); String data = new String(receiverPack.getData(), 0, dataLen); System.out.println("UDPProvider receive from ip: " + ip + "\tport: " + port + "\tdata: " + data); //构建一份回送数据 String responseData = "Receive data with len: " + dataLen; byte[] responseDataBytes = responseData.getBytes(); DatagramPacket responsePacket = new DatagramPacket(responseDataBytes, responseDataBytes.length, receiverPack.getAddress(), receiverPack.getPort()); ds.send(responsePacket); System.out.println("UDPProvider Finished!"); ds.close(); } } 

UDPSearcher.java

import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPSearcher { public static void main(String[] args) throws IOException { System.out.println("UDPSearcher Started."); //搜索方自动分配端口 DatagramSocket ds = new DatagramSocket(); //构建一份回送数据 String requestData = "Hello World"; byte[] requestDataBytes = requestData.getBytes(); //根据发送者构造一份回送信息 DatagramPacket requestPacket = new DatagramPacket(requestDataBytes, requestDataBytes.length); //本机2000端口 requestPacket.setAddress(InetAddress.getLocalHost()); requestPacket.setPort(2000); ds.send(requestPacket); //构建接收实体 final byte[] buf = new byte[512]; DatagramPacket receiverPack = new DatagramPacket(buf, buf.length); //接收 ds.receive(receiverPack); //打印发送者信息 String ip = receiverPack.getAddress().getHostAddress(); int port = receiverPack.getPort(); int dataLen = receiverPack.getLength(); String data = new String(receiverPack.getData(), 0, dataLen); System.out.println("UDPSearcher receive from ip: " + ip + "\tport: " + port + "\tdata: " + data); System.out.println("UDPSearcher Finished!"); ds.close(); } } 

 

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

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

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


相关推荐

  • java实现定时器的四种方式_java中定时器的实现原理

    java实现定时器的四种方式_java中定时器的实现原理Java定时器在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。在WEB项目中可能需要每隔一段时间自动生成静态页,自动检测是否有新邮件,定时自动备份文件等操作。这些都可以通过定时器Timer来解决。这里仅提供定时器的部分方法和说明,静态页生成等操作读者可以通过相关方法自行解决。。。。百度空间贴代码总是很让人头疼,排好的代码拿到这里就出现混乱。(1)Timer.schedule(T…

    2026年1月20日
    6
  • 树莓派变身软路由——安装openwrt

    树莓派变身软路由——安装openwrt最近闲来无事,手头刚好有限制的树莓派。由于安装kali,性能不足。安装原版树莓派镜像又不是刚需。所以奢侈了一会,刷了个openwrt镜像当软路由使用。前期准备:(需要的工具在文末) 树莓派3B+ 适用于树莓派的openwrt镜像 读卡器 一张32G以上的内存卡 格式化工具:SDcardformatter 写入工具:win32diskimager具体步骤:下载o…

    2022年5月12日
    47
  • 百度网站链接怎么分享_url的组成部分有哪些

    百度网站链接怎么分享_url的组成部分有哪些百度分享默认分享的是当前页的url,但也可以在同一个页面中分享多个不同的url,仅需进行如下简单的配置。默认的代码如下:其实是有很多隐藏的参数的:’bdDes’:’您的自定义分享摘要’, //’请参考自定义分享摘要”text’:’您的自定义分享内容’, //’请参考自定义分享内容”title’:’您的自定义pop窗口标题’, //’请参考自定义p

    2022年10月8日
    4
  • 阿里云视频直播PHP-SDK接入教程

    阿里云视频直播PHP-SDK接入教程

    2021年11月6日
    45
  • Java程序设计(高级及专题)- 泛型/容器(集合框架)

    Java程序设计(高级及专题)- 泛型/容器(集合框架)Java程序设计(高级及专题)- 泛型/容器(集合框架)

    2022年4月22日
    41
  • 卸载pycharm重新安装_ubuntu卸载pycharm

    卸载pycharm重新安装_ubuntu卸载pycharm1.安装包下载下载地址https://www.jetbrains.com/pycharm/download/#section=linux社区版是免费的,不需要支付额外的费用,但是功能略微筛选,适合于学生群体,而专业版需要支付一定的费用,功能比较多,适用于企业,但整体的安装过程相同。2.安装在安装包过程启动终端命令,解压缩下载后的安装包修改自己的安装包版本号即可$tar-zxvfpycharm-professional-2021.3.1.tar.gz将解压缩后的目录移动到/

    2022年8月29日
    3

发表回复

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

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