`
李佳豪king
  • 浏览: 7732 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

UDP通信的丢包问题

    博客分类:
  • java
 
阅读更多

UDP通信的效率比TCP要高,大家都这么说,大家还说UDP的通信是不可靠的,我实验了一把UDP的通信丢包率,结果最差的情况的丢包率也是0.2%。下面是测试代码

 

数据发送端:

package com.ljh.UDPEfficiency;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketAddress;

public class Client {
	private static DatagramSocket dataGramSocke;
	private static DatagramPacket datagramPacket,ensruePacket;
	private static SocketAddress localAddress, destAddress;

	public static void main(String[] args) throws Exception {
		localAddress = new InetSocketAddress("172.16.12.28", 5000);
		dataGramSocke = new DatagramSocket(localAddress);
		destAddress = new InetSocketAddress("120.27.37.122", 6000);
		System.out.println("与服务器" + destAddress.toString() + "聊天:");
		int count=0;
		while (true) {
			count++;
			
			String msg = "客户端"+count;
			byte bytearray[] = msg.getBytes();
			datagramPacket = new DatagramPacket(bytearray, bytearray.length,
					destAddress);
			dataGramSocke.send(datagramPacket);
			
			System.out.println(msg);
			if(count==10000){
				System.out.println("断开连接");
				dataGramSocke.close();
				break;
			}

		}

	}
}

 数据接收端:

package com.ljh.UDPEfficiency;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketAddress;

public class Server {
	private static DatagramSocket dataGramSocke;
	private static DatagramPacket recvPacket, returnEnsurePk;
	private static SocketAddress localAddress;

	public static void main(String[] args) throws Exception {
		localAddress = new InetSocketAddress("127.0.0.1", 6000);
		dataGramSocke = new DatagramSocket(localAddress);
		int count = 0;
		while (true) {
			byte recv[] = new byte[30];
			recvPacket = new DatagramPacket(recv, recv.length);
			dataGramSocke.receive(recvPacket);
			
			String recvstr = new String(recvPacket.getData(),0,recvPacket.getLength());
			System.out.println(recvstr);
			count++;
			System.out.println("count=" + count);

		}

	}
}

 每次测试,发送10000个数据包,大概能接收到9980+个数据包

分享到:
评论

相关推荐

    udp是不可靠的会丢包,如何查看udp丢包数、丢包率

    为了监控和分析UDP通信的丢包情况,我们可以采用一些系统内置的工具和方法。 1. **netstat命令**: 在Linux环境中,`netstat` 是一个非常有用的网络诊断工具。通过运行 `netstat -st` 命令,你可以获取UDP协议的...

    UDP 丢包率测试工具

    丢包率测试是评估网络性能的重要指标,尤其对于实时性要求高的应用如在线游戏、音视频流媒体等,了解UDP丢包率有助于优化网络通信。 本工具专注于UDP丢包率的测试,它的工作原理是客户端通过UDP Socket发送特定大小...

    基于UDP SOCKET 统计丢包率

    - 网络诊断:评估网络质量,定位丢包问题。 - 游戏开发:实时游戏中,丢包率直接影响玩家体验,需要实时监控和优化。 - 流媒体:高丢包率会影响视频流畅度,需要采取补偿策略。 这个项目不仅涉及基本的UDP通信,...

    udp丢包率统计

    丢包率是衡量UDP通信质量的重要指标,它反映了数据包从发送端到接收端过程中丢失的比例。 UDP丢包率的统计方法通常包括以下步骤: 1. 数据包发送:首先,发送端通过UDP协议发送一定数量的数据包到目标地址。这些...

    UDP丢包分析工具

    为了分析和解决这一问题,"UDP丢包分析工具"应运而生。 该工具专门设计用于测试UDP组播流量,它能够帮助网络管理员和开发者检测在UDP组播过程中可能出现的丢包情况。UDP组播是一种高效的通信方式,通过将数据发送到...

    基于UDP丢包统计程序设计.zip

    本项目在发送 UDP 数据包时做一个循环,连续发送 100 个数据包;在接收端统计丢失的数据包。 实验时,请运行 Wireshark 软件,对通信时的数据包进行跟踪分析。 详细介绍参考:...

    UDP.rar_UDP 协议_UDP 通信协议C++_udp 协议栈_udp通信Ip包

    2. **数据包处理**:由于UDP的不可靠性,需要在应用层处理数据包的顺序、丢包和重复等问题。 3. **错误处理**:在C++中,需要捕获和处理可能出现的错误,如套接字创建失败、数据发送接收异常等。 **UDP协议栈:** ...

    基于Xilinx ISE 14.7平台的FPGA UDP通信实现千兆无丢包与200k 128通道采集技术突破,Xilinx ISE 14.7平台上FPGA UDP逻辑编程实现千兆无丢包及200k 12

    基于Xilinx ISE 14.7平台的FPGA UDP通信实现千兆无丢包与200k 128通道采集技术突破,Xilinx ISE 14.7平台上FPGA UDP逻辑编程实现千兆无丢包及200k 128通道数据采集工程验证,FPGA udp纯逻辑编写,Xilinx ise14.7平台,...

    UDP_c#UDP_vs2013UDP通信_UDP通信_vs2019udp通信_featherss3l

    - 数据包重传策略,处理丢包情况。 - 分组和分段技术,适应不同大小的数据传输。 总的来说,这个项目提供了使用C#和UDP在VS2013环境下实现通信的基础示例,同时也考虑了与VS2019的兼容性问题。通过理解UDP协议的...

    UDP通信实验(含实验报告)

    在结果分析中,可能涉及数据传输的效率、丢包情况、网络延迟等因素的探讨。 6. 错误处理:在实验中,可能会遇到如端口冲突、数据包丢失等问题,需要学会如何进行错误检测和处理。 7. 实验工具:可能使用到的工具有...

    C#UDP通讯组件,支持拆包组包,丢包重发

    2. **丢包重发**:在UDP通信中,数据包可能会丢失,而TCP的确认机制在UDP中是不可用的。为了确保数据的完整性,此组件实现了检测丢包并进行重发的功能。通常,这会通过序列号和超时重传策略来实现。 3. **简单易用...

    matlab udp 广播通信_广播_UDP_matlab_matlabudp广播_通信_

    UDP(User Datagram Protocol)是一种无连接的传输层协议,它提供了简单高效的数据传输方式,适用于实时数据传输或对丢包不敏感的应用场景。而广播通信则允许一个发送者向网络中的所有设备发送数据,无需预先知道...

    Labwindow_cvi TCP UDP通信例程

    而UDP更适合实时性要求高、对丢包容忍度较高的应用,如视频流、在线游戏等。 通过研究LabWindows/CVI提供的TCP和UDP通信例程,你可以学习如何在你的应用程序中实现这些功能,以便在实际项目中灵活运用。在分析和...

    FPGA千兆无丢包UDP通信与200k 128通道数据采集的Xilinx ISE 14.7实现

    内容概要:本文详细介绍了在Xilinx ISE 14.7平台上实现千兆无丢包UDP通信以及200k 128通道数据采集的FPGA项目。作者通过使用Xilinx Tri-Mode Ethernet MAC IP核实现MAC层通信,跳过IP层以减少逻辑资源消耗。UDP头部...

    FPGA udp通信verilog代码+python上位机代码

    4. **错误处理**:处理网络异常,如丢包、乱序等,确保通信的可靠性。 5. **数据处理**:根据应用需求,对接收到的数据进行进一步的处理和分析。 在"DataGetProcessProject"这个文件夹中,很可能包含了Verilog源...

    Untiy Udp局域网通信整理

    以上就是Unity UDP局域网通信的基本知识和应用,实际开发中还需要结合具体项目需求进行优化和扩展,例如增加心跳机制、处理丢包重传、多线程优化等。提供的资源包含了服务端和客户端示例,可以作为学习和参考的基础...

    UDP.zip_matlab udp_matlab udp编程_matlab udp通信_matlab 通信_udp matla

    - **丢包**:由于UDP的不可靠性,可能会发生丢包。解决方案可能涉及在应用层添加重传机制或使用可靠UDP库。 - **乱序**:数据包可能不按顺序到达。这需要在接收端实现排序算法。 - **错误检测**:由于UDP没有内置...

    PS端开发UDP通信,完成网口助手收发一致

    需要注意,由于UDP的不可靠性,可能需要处理丢包和乱序的情况。 6. 错误处理:在编程过程中,必须考虑到可能出现的错误,例如网络中断、内存不足或无效的IP地址等。 7. 关闭套接字:当通信完成后,使用`udp_remove...

    UDP通信模型

    - **丢包问题**:由于UDP不保证数据的可靠传输,所以可能会出现数据丢失的情况。开发者需要在应用层处理这种情况,例如通过序列号和确认机制来检测丢失的数据包。 - **乱序问题**:同样,UDP不保证数据的顺序,因此...

Global site tag (gtag.js) - Google Analytics