当前位置: 首页 > news >正文

UDP网络编程其他相关事项

netstat指令

netstat -an 可以查看当前主机网络情况,包括端口监听情况和网络连接情况。

netstat -an | more 可以分页显示。

要求在dos控制台下执行。

说明:(1)Listening表示某个端口在监听;(2)如果有一个外部程序(客户端)连接到该端口,就会显示一条连接信息。(3)可以输入ctrl +c退出指令。

UDP网络编程案例

类 DatagramSocket 和 DatagramPacket(数据包 / 数据报)实现了基于UDP协议网络程序。

UDP数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。

DatagramPacket对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号。

UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接。

UDP说明:                                                                                                                                        1、没有明确的服务端和客户端,演变成数据的发送端和接收端。                                                        2、接收数据和发送数据是通过 DatagramSocket 对象完成。                                                          3、将数据封装到DatagramPacket 对象/装包。                                                                                4、当接收到DatagramPacket 对象,需要进行拆包,取出数据。                                                        5、DatagramSocket可以指定在哪个端口接收数据。

基本流程:

1、核心的两个类/对象 DatagramSocket与DatagramPacket。

2、建立发送端,接收端(没有服务端和客户端概念)。

3、发送数据前,建立数据包/报DatagramPacket对象。

4、调用DatagramSocket的发送、接收方法。

5、关闭DatagramSocket。

接收端:

//1。创建一个DatagramSocket对象,准备接收数据DatagramSocket socket = new DatagramSocket(端口号);//2.构建一个DatagramPacket对象,准备接收数据(一个数据包最大64k)byte[] buf = new byte[1024];DatagramPacket packet = new DatagramPacket(buf, buf.length);//调用接收方法,将通过网络传输的DatagramPacket对象填充到 packet 对象//注:如果没有数据包发送到本机的9999端口,就会阻塞等待。socket.receive(packet);//把packet进行拆包,取出数据,并显示。int length = packet.getLength();//实际接收到的数据字节长度byte[] data = packet.getData();//接收到数据String s = new String(data,0,length);ystem.out.println(s);//关闭资源socket.close();

发送端:

//创建DatagramSocket 对象,准备接收数据DatagramSocket socket = new DatagramSocket(9998);//将需要发送的数据,封装到DatagramPacket对象byte[] data ="内容".getBytes();//说明:封装的DatagramPacket对象:data 内容字节数组,data.length,接收端IP,端口DatagramPacket packet =new DatagramPacket(data,data.length,IP,端口);//发送socket.send(packet);//关闭资源socket.close(;l

http://www.lryc.cn/news/262313.html

相关文章:

  • Redhat LINUX 9.3 + PG 16.1 搭建主备流复制
  • kafka设置消费者组
  • Worker-Thread设计模式
  • npm 安装包遇到问题的常用脚本(RequestError: socket hang up)
  • 活动 | Mint Blockchain 将于 2024 年 1 月 10 号启动 MintPass 限时铸造活动
  • Android动画(四)——属性动画ValueAnimator的妙用
  • C语言飞机大战
  • js 原型 和 原型链
  • 如何利用SD-WAN节省运维成本和简化运维工作?
  • 在工作中使用CHAT提高效率
  • Maven 项目的三种打包方式与 pom.xml 文件中项目描述
  • 【普中】基于51单片机简易计算器数码管显示设计( proteus仿真+程序+实物演示+讲解视频)
  • 【Android】DeepLink
  • 微服务Redis-Session共享登录状态
  • 30道C++ 基础高频题整理(附答案背诵版)
  • 【Spark面试】Spark面试题答案
  • Axure的动态面板
  • 【STM32】STM32学习笔记-对射式红外传感器计次 旋转编码器计次(12)
  • 后端项目操作数据库-中枢组件Service调用Mapper实现增删改查-实例
  • kafka学习笔记--节点的服役与退役
  • 2023-12-16:用go语言,给定整数数组arr,求删除任一元素后, 新数组中长度为k的子数组累加和的最大值。 来自字节。
  • libxls - 编译
  • 自建私有git进行项目发布
  • 华为HCIP认证H12-821题库上
  • Web安全漏洞分析—文件包含
  • C++入门【9-C++循环】
  • Python3 数字(Number) ----20231215
  • PyQt6 QToolBar工具栏控件
  • nodejs+vue+微信小程序+python+PHP基于大数据的银行信用卡用户的数仓系统的设计与实现-计算机毕业设计推荐
  • EMC RI/CI测试方案助您对抗电磁设备干扰!