Java笔记(14) UDP通讯程序Demo

这篇具有很好参考价值的文章主要介绍了Java笔记(14) UDP通讯程序Demo。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现一个简单的UDP通信程序,仅作为笔记使用
网络编程中有三要素:IP、端口号和通信协议,分别用来确定对方在互联网上的地址、指定接受数据的软件和确定数据在网络中传输的规则。

IP地址

IP地址分为IPv4地址和IPv6地址,这里不做讨论。
IPv4地址中分为公网地址(万维网使用)和私有地址(局域网使用)。192.168.开头的就是私有地址,范围是192.168.0.0--192.168.255.255。另外还有一个特殊地址:127.0.0.1,也可以是localhost,称为回送地址,也称本机IP。与在局域网中被分配的IPv4地址来说,该地址永远指向自身,而分配的IP地址,有可能随着连接时间和地点的变换而变换。

端口号

端口号是应用程序在设备中唯一的标识,有两个字节标识的整数组成,因此取值范围为065535。其中01023之间的端口固定用于一些知名的网络服务或者应用。一个端口号只能被一个应用占用。

协议

互联网通信协议分为OSI参考模型和TCP/IP参考模型,这里不做讨论。
两种运行在传输层的协议:

  • UDP协议:用户数据包协议(User Datagram Protocol)。UDP是面向无连接的通信协议。速度较快,但有大小限制,一次最多发送64k,是数据不安全的,易丢失数据。
  • TCP协议:传输控制协议(Transmission Control Protocol)。TCP协议是面向连接的通信协议。速度相较于UDP较慢,但没有大小限制,是数据安全的。

UDP通信程序流程

发送数据

  1. 创建发送端的 DatagramSocket对象
  2. 数据打包 DatagramPacket
  3. 发送数据
  4. 释放资源

接收数据

  1. 创建接收端的 DatagramSocket
  2. 接收打包好的数据
  3. 解析数据包
  4. 释放资源

UDP-Sender实现

public class SendMessageDemo {
    public static void main(String[] args) throws IOException {
        //1. 创建发送端的 DatagramSocket,空参表示不指定端口,随机使用可用端口
        DatagramSocket socket = new DatagramSocket();

        //2. 将数据封装进 DatagramPacket 对象中,作为发送者,需要指定接收方的IP和接受端口号
        String str = "Hello";
        byte[] bytes = str.getBytes();
        InetAddress address = InetAddress.getByName("127.0.0.1");//get target IP address
        DatagramPacket packet = new DatagramPacket(bytes, bytes.length, address, 10086);

        //3. 发送打包的数据包
        socket.send(packet);

        //4. 端口号资源是有限的,发送完成后释放端口号
        socket.close();
    }
}

UDP-Receiver实现

public class ReceiveMessageDemo {
    public static void main(String[] args) throws IOException {
        //1. 创建接收端的 DatagramSocket,作为接收方,需要指定使用哪个接口进行接受
        DatagramSocket socket = new DatagramSocket(10086);

        //2.接收打包好的数据,由于数据通过DatagramPacket对象发送,接收端也需要创建一个DatagramPacket对象来接收
        byte[] bytes = new byte[1024];
        DatagramPacket packet = new DatagramPacket(bytes, bytes.length);

        //这个方法是阻塞的,程序会一致在这里等待
        socket.receive(packet);

        //3. 解析数据,接收方可以得到以下信息:发送的数据包、数据长度、发送发地址、发送方使用的端口号
        byte[] data = packet.getData();
        int len = packet.getLength();
        InetAddress address = packet.getAddress();
        int port = packet.getPort();

        System.out.println("Received data: " + new String(data, 0, len));
        System.out.println("This data was send from " + port + "port of the " + address + " computer");

        //4. 释放资源
        socket.close();
    }
}

需要先运行接收端程序,接收程序阻塞等待接受数据。然后运行发送端程序,发送数据。
Java笔记(14) UDP通讯程序Demo文章来源地址https://www.toymoban.com/news/detail-403940.html

到了这里,关于Java笔记(14) UDP通讯程序Demo的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用Java包com.sun.net.httpserver下面的类实现一个简单的http服务器demo

    java的com.sun.net.httpserver包下的类提供了一个高层级的http服务器API,可以用来构建内嵌的http服务器。支持http和https。这些API提供了一个RFC 2616 (HTTP 1.1)和RFC 2818 (HTTP over TLS)的部分实现。 https://docs.oracle.com/en/java/javase/19/docs/api/jdk.httpserver/com/sun/net/httpserver/package-summary.html 下面来实

    2024年02月07日
    浏览(34)
  • 关于微信小程序使用UDP实现局域网通讯及UDP模块的封装

    距离我上一次发物联网类前端的教程好久了 前段时间刚刚实现了以下小程序使用UDP进行了局域网的控制 做的时候发现网上对应的教程比较少或者有的看着有点头晕 特此不要脸的发一篇教程,写得不好多多包涵。咱话不多说,直接开写!!! 首先,老规矩,先上图: 上图为

    2024年02月01日
    浏览(31)
  • Java生成微信小程序二维码,5种实现方式,一个比一个简单

    先介绍一下 项目场景 ,主要是通过微信小程序二维码 裂变分享 ,每个账号有专属邀请二维码,分享出去,有新人扫码入驻,就可以得到现金奖励或红包奖励。当然,产品设计会更丰富,不止有裂变模式,还有渠道推广模式,还有各种奖励规则,但核心实现都是生成二维码。

    2024年02月03日
    浏览(36)
  • Uniapp学习之从零开始写一个简单的小程序demo(新建页面,通过导航切换页面,发送请求)

    先把官网文档摆在这,后面会用到的 [uniapp官网文档]: https://uniapp.dcloud.net.cn/vernacular.html# 按照官方推荐,先装一个HBuilder 如果要在微信小程序上运行,再装一个微信开发者工具 为了之后的调试,在HBuilder里配置微信开发者工具的安装路径 在微信开发者工具中设置端口开发、不

    2024年02月10日
    浏览(31)
  • 微信小程序实现的一个登录页面Demo

    微信小程序登录页面示例代码,包括了获取验证码按钮等30秒点一次功能和勾选同意用户条款的功能,仅供参考,效果图如下 *.wxml文件: *.wxss文件: *.js文件: 这个示例代码实现了一个登录页面,并且包括了输入手机号和验证码,获取验证码按钮,勾选同意用户条款,登录按

    2024年02月03日
    浏览(33)
  • Java利用UDP实现简单群聊

    一、创建新项目 首先新建一个新的项目,并按如下操作 二、实现代码 界面ChatFrame类 package 群聊;   import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.net.InetAddress;   public abstract class ChatFrame extends JFrame {     private JTextArea receiveArea = new JTextArea();//接收文本框,用来显示

    2024年02月04日
    浏览(28)
  • 【网络编程】利用套接字实现一个简单的网络通信(UDP实现聊天室 附上源码)

    源IP地址(Source IP Address): 源IP地址是数据包发送方(或数据流出发点)的唯一标识符。它用于在互联网或本地网络中定位发送数据包的设备或主机。源IP地址是数据包的出发点,即数据从这个地址开始传送,向目的IP地址指示的设备发送。 在TCP/IP协议中,源IP地址通常由发

    2024年02月14日
    浏览(67)
  • 「Java」Socket实现简单的客户端和服务端通讯 | 公网环境通讯

    💛前情提要💛 本章节是 番外篇 的 Socket 的相关知识~ 接下来我们即将进入一个全新的空间,对代码有一个全新的视角~ 以下的内容一定会让你对 Socket 有一个颠覆性的认识哦!!! 以下内容干货满满,跟上步伐吧~ 作者介绍: 🎓 作者: 热爱编程不起眼的小人物🐐 🔎 作者

    2023年04月16日
    浏览(38)
  • Java利用UDP实现简单的双人聊天

    一、创建新项目 首先创建一个新的项目,并命名。 二、实现代码   import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.IOException; import java.lang.String;   public class liaotian extends JFrame{     private static final int DEFAULT_PORT=1;//端口名     private JLabel stateLB;    

    2024年02月03日
    浏览(38)
  • Qt进行UDP通讯,创建一个收线程这样可以进行接收数据

    在.pro中增加一句话 绘制界面 .h文件内容: 构造函数内容 对于绑定按钮的定义函数: 接收信号的槽函数(UDP接收到数据显示) quitThreaSlot函数: 退出按钮定义: 使用的receivethread.h就是将run函数重写(循环发送定义的信号延迟即可),在定义一个信号即可。 以上即功能的所有

    2024年02月20日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包