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


相关推荐

  • iReport 设计介绍「建议收藏」

    iReport 设计介绍「建议收藏」目录iReport用户手册………………………………………………………………………………………………1iReport用户手册-介绍………………………………………………..

    2025年10月21日
    4
  • python解析xml文件(解析、更新、写入)

    python解析xml文件(解析、更新、写入)Overview这篇博客内容将包括对XML文件的解析、追加新元素后写入到XML,以及更新原XML文件中某结点的值。使用的是python的xml.dom.minidom包,详情可见其官方文档:xml.dom.minidom官方文档。全文都将围绕以下的customer.xml进行操作:<?xmlversion=”1.0″encoding=”utf-8″?><!–Thi…

    2022年7月12日
    19
  • 爱的思念与牵挂_惦记牵挂短语

    爱的思念与牵挂_惦记牵挂短语爱和喜欢是同等的,由喜欢到真诚,由真诚到爱,是一个即复杂又简单的过程;说复杂,爱又是简单的;说简单,爱又是真诚,思念,挂念的综合;我挂念她;挂念她的一切;她心情不好了;我挂念她是否生意上有什么难处;她心情不好了;我挂念她是否又遇到什么烦心的事,我挂念她的身体,她经常头疼;是不是有因为什么事烦了她;是不是有什么人无谓的惹她生气;我让她好好休息,我祈祷一切烦恼远离她;我知道她心很软;知道她心很善良;知

    2022年9月20日
    2
  • 从零开始学 iOS 开发的15条建议「建议收藏」

    从零开始学 iOS 开发的15条建议「建议收藏」作者:清醒疯子利炳根授权本站转载。事情困难是事实,再困难的事还是要每天努力去做是更大的事实。因为我是一路自学过来的,并且公认没什么天赋的前提下,进步得不算太慢,所以有很多打算从零开始的朋友会问我,该怎么学iOS开发。跟粉丝群的朋友交流了一下,决定把之前的《18条建议》修改一下,这里统一回答一次。分三部分:第一部分:态度和电脑1、不要关注别人的学习经历,不要关注别人加薪经历

    2022年5月30日
    34
  • .java编译成.class 与 .class反编译成.java

    .java编译成.class 与 .class反编译成.java.java编译成.class 与 .class反编译成.java

    2022年4月23日
    105
  • Mac — MySql配置环境变量

    Mac — MySql配置环境变量全网最详细的Mac–MySql环境配置变量,包教会????,不信你就来看

    2022年6月17日
    28

发表回复

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

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