首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法使用C# UdpClient通过Windows Build 1809发送大于MTU的UDP数据包

C# UdpClient是一个在C#中用于UDP通信的类,它可以用于发送和接收UDP数据包。然而,有时候在Windows Build 1809版本中使用C# UdpClient发送大于MTU(最大传输单元)的UDP数据包会遇到问题。MTU是指在计算机网络通信中,能够传输的最大数据包大小。

发送大于MTU的UDP数据包可能会导致数据包被分片,而在某些情况下,这些分片可能会被丢弃或导致网络延迟。这个问题可能是由于Windows Build 1809版本的特定配置或Bug导致的。

为了解决这个问题,可以考虑以下几点:

  1. 使用较小的数据包:调整发送的UDP数据包的大小,保持其小于MTU。这样可以避免数据包分片和丢失的问题。可以通过减小数据包大小或使用压缩算法等方式来实现。
  2. 数据包分段发送:将大的数据包拆分为多个小的数据包进行发送。这样可以确保每个数据包都小于MTU,避免了数据包分片的问题。接收端需要能够识别并重组这些分段数据包。
  3. 使用TCP协议替代UDP:如果使用UDP发送大量数据并不是必须的,可以考虑使用TCP协议替代UDP。TCP协议可以保证可靠传输,数据包的大小也没有限制。
  4. 升级操作系统:由于问题可能是特定于Windows Build 1809版本的,尝试升级操作系统到最新版本可能会解决该问题。

总结一下,无法使用C# UdpClient通过Windows Build 1809发送大于MTU的UDP数据包可能会遇到问题,可能导致数据包分片和丢失。解决方法可以是调整数据包大小,分段发送数据包,使用TCP协议替代UDP,或者考虑升级操作系统。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#UDP编程

二.C#发送、接收UDP数据包使用主要类及其用法 用Visual C#实现UDP协议,最为常用,也是最为关键类就是UdpClientUdpClient位于命名空间System.Net.Sockets...中,Visual C#发送、接收UDP数据包都是通过UdpClient。...C#使用UdpClient发送UDP数据包 在具体使用中,一般分成二种情况: (1) 知道远程计算机IP地址: Send方法调用语法如下: publicint Send ( byte[] dgram...下面使用UdpClient发送UDP数据包具体调用例子: IPAddressHostIP = new IPAddress.Parse ( "192.168.0.188" ) ; IPEndPointhost...C#使用UdpClient类接收UDP数据包: 接收UDP数据包使用UdpClientReceive方法,此方法调用语法如下: publicbyte [] Receive ( ref IPEndPoint

1.2K10

UDP 协议 C# UdpClient乱序接收数据包丢失问题 Socket ReceiveBufferSize

一、UDP 协议 C# UdpClient乱序接收数据包丢失问题 Socket ReceiveBufferSize 利用UdpClient收发文件,走Udp协议,发送端只管发送数据包,接收端负责接收数据...,测试中发现,按每块1298字节发送数据包时,接收端在接收共8块时出现了部分数据包丢失,分析可能是数据突然集中到达超出Socket接收缓冲区大小,造成数据覆盖丢失,因为默认Socket缓冲区大小为8192...字节,每块数据1298字节再加上我在实验程序中自定义数据包头信息,每块数据大小在1472字节,8块共计11776字节,远超出了8192,会造成数据丢失。...接收端在乱序接收文件过程中,对突然集中到达数据包处理不及时,造成缓冲区大小不够存储这些数据包,发生数据包丢失,因而【如果要传送大文件,或在使用高带宽或高滞后时间连接(如卫星宽带提供程序),请考虑增加缓冲区大小...针对UdpClient,我们需要用到Socket ReceiveBufferSize 属性,添加如下代码: UdpClient uc = new UdpClient(7376);//创建一个UdpClient

1.9K20
  • C#编写上位机使用UDP给单片机发送Json格式数据

    在本文就用C#编写上位机使用UDP给单片机发送Json格式数据,进行数据传输。...UDP 为应用程序提供了一种无需建立连接就可以发送封装 IP 数据包方法。 Internet 传输层有两个主要协议,互为补充。...无连接UDP,它除了给应用程序发送数据包功能并允许它们在所需层次上架构自己协议之外,几乎没有做什么特别的事情。面向连接是 TCP,该协议几乎做了所有的事情。...UDP有不提供数据包分组、组装和不能对数据包进行排序缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达UDP用来支持那些需要在计算机之间传输数据网络应用。...Receive 返回已由远程主机发送 UDP 数据文报 Send 将 UDP 数据文报发送到远程主机 创建监听举例: UdpClient udpserver; private void udpListen

    91420

    浅谈UDP(数据包长度,收包能力,丢包及进程结构选择)

    因特网协议允许IP分片,这样就可以将数据包分成足够小片段以通过那些最大传输单元小于该数据包原始大小链路了。这一分片过程发生在网络层,它使用是将分组发送到链路上网络接口最大传输单元值。...对于大于这个数值分组可能被分片,否则无法发送,而分组交换网络是不可靠,存在着丢包。IP 协议发送方不做重传。...又因为UDP数据报首部8字节,所以UDP数据报数据区最大长度为1472字节。这个1472字节就是我们可以使用字节数。 ? 当我们发送UDP数据大于1472时候会怎样呢?...这也就是说IP数据报大于1500字节,大于MTU。这个时候发送方IP层就需要分片(fragmentation)。把数据报分成若干片,使每一片都小于MTU。而接收方IP层则需要进行数据报重组。...如果我们假定MTU为1500来发送数据,而途经某个网络MTU值小于1500字节,那么系统将会使用一系列机制来调整MTU值,使数据报能够顺利到达目的地。

    12.2K100

    IP碎片攻击

    如果IP层有数据包要传,而且数据包长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片长度都小于或等于MTU。...我们假设要传输一个UDP数据包,以太网MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据净荷(payload)部分预留是1500-20-8=1472字节。...4. jolt2jolt2.c是在一个死循环中不停发送一个ICMP/UDPIP碎片,可以使Windows系统机器死锁。...我测试了没打SPWindows 2000,CPU利用率会立即上升到100%,鼠标无法移动。我们用Snort分别抓取采用ICMP和UDP协议发送数据包。...jolt2影响相当大,通过不停发送这个偏移量很大数据包,不仅死锁未打补丁Windows系统,同时也大大增加了网络流量。

    1.6K20

    C# UDP编程「建议收藏」

    ,与UDP数据报做一个对比作用): UDP协议和TCP协议都使用端口号为不同应用保留其各自数据传输通道这一机制,数据发送方将UDP数据报通过源端口发送出去,而数据接收方则通过目标端口接收数据...49439和49440,而不是发送消息进程真实端口(11883和21883) 这种UDP只能辨别消息源主机Ip地址,而无法知道发消息进程究竟是哪个端口称为“匿名发送”。...四、UDP广播和组播 前面UDP实现中发送数据使用都是一对一(单播)通信方式,即只将数据发送到某一个进程。前面提到UDP可以实现一对多传输方式,即通过广播和组播把数据发送给一组进程。...: UdpClient类提供了JoinMulticastGroup方法,用于将UdpClient加入到使用指定IPAddress组播组中,调用该方法后,基础Socket会自动向路由器发送数据包,...退出组播组: 同样利用UdpClientDropMulticastGroup方法,可以退出组播组,调用该方法后,基础Socket会自动向路由器发送数据包,用于请求从指定组播组里退出,从组中回收UdpClient

    1.2K30

    UDPTCP 包大小限制是多少?

    一般情况下,数据包大小都是在这个范围内,如果数据包 小于64 字节,称为 碎片; 而如果 大于1518 字节,称为 特大数据包。...用 sendt o函数发送数据时,如果发送数据长度大于该值,则函数会返回错误 3、UDP 协议分成若干个包发送,会发送整个数据丢失问题 如果数据小于 65507字节 ,则:按照 MTU 值进行分包,分成若干个包...更严重是,如果使用 UDP 协议,当 IP 层组包发生错误,那么包就会被丢弃。 接收方无法重组数据报,将导致丢弃整个 IP 数据报。...于是我们需要稍微调大数值,以便求得最为精确网络 MTU 值 步骤三: 如此这般,通过不断修正数据包大小,我们可以最终得到当前网络 MTU 值。...img 4、ping 命令使用是 ICMP 协议 ping 命令使用,既不是 tcp 报文,也不是 udp 报文 它用是 ICMP 协议,与 IP 协议同级,属于 网络层,位于 tcp、udp(传输层

    4.8K30

    udp 视频传输_webrtc视频流传输

    UDP实时图像传输一文中,介绍了如何使用UDP来实现图像实时传输,并使用C#进行了发送端和接收端搭建。...但是文中方法是对整张图片进行JPEG压缩,并通过UDP一次性地发送到接收端,由于一个UDP数据包只能发送64k字节数据,所以该方法图片传输大小是有限制,实测只能发送480P视频中图像。...流程如下 实验环境 VS2019 / .NET4.7.1 / C#(开发环境) EmguCV 4.1(用于读取、压缩图像,使用方法见上一篇文章) PC(测试环境) 发送端 在发送端我们需要达到效果如下...ipaddress = remoteIP; IPEndPoint endpoint = new IPEndPoint(ipaddress, 8000 + 10 * i); // UDP发送 udpClient.Send...如果有时间的话,就继续添加利用时间戳计算延迟程序。另外,发送并行处理效率有待提高,后续可以使用C++进行openMP加速看看效果。

    1.8K20

    电脑客户端遥控鸿蒙开发板执行相应命令

    UDP 为应用程序提供了一种无需建立连接就可以发送封装 IP 数据包方法。 Internet 传输层有两个主要协议,互为补充。...无连接UDP,它除了给应用程序发送数据包功能并允许它们在所需层次上架构自己协议之外,几乎没有做什么特别的事情。面向连接是 TCP,该协议几乎做了所有的事情。...UDP有不提供数据包分组、组装和不能对数据包进行排序缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达UDP用来支持那些需要在计算机之间传输数据网络应用。...退出多路广播组 JoinMulticastGroup 将 UdpClient 添加到多路广播组 Receive 返回已由远程主机发送 UDP 数据文报 Send 将 UDP 数据文报发送到远程主机...,通过UDP下发命令,开发板通过WiFi模块连接,之后对电脑端发送命令进行解析,之后对相应命令执行相应操作。

    65820

    解密IP分片与重组:数据传输中关键技术

    TCP协议通过将应用层数据分成多个数据段来传输,而每个数据段大小受到MSS限制。每种数据链路MTU之所以不同,是因为每个不同类型数据链路使用目的不同。使用目的不同,可承载MTU也就不同。...这样做好处是,TCP可以更加精确地控制每个数据段大小,避免了IP层分片可能引发问题。对于UDP协议来说,我们尽量不要发送一个大于MTU数据报文。...这是因为UDP是面向无连接传输协议,它不提供像TCP那样可靠性和重传机制。如果我们发送一个大于MTUUDP数据报文,它将被IP层进行分片传输。...一旦其中某个分片丢失,UDP协议无法进行重传,导致数据丢失。因此,为了确保数据可靠传输,我们应尽量将UDP数据报文大小控制在MTU之内,避免分片传输。...不同数据链路具有不同最大传输单元(MTU),当数据包大小超过MTU限制时,IP分片将数据包分割为多个较小分片进行传输,到达目的地后通过IP重组机制重新组合成完整数据包

    86210

    领航Linux UDP:构建高效网络新纪元

    不同点 UDP协议 TCP协议 可靠性 不提供可靠性保证,不保证数据包顺序、完整性和不重复。 提供可靠数据传输,通过序列号、确认机制和重传机制确保数据完整性和有序性。...数据包大小 数据包大小没有限制,但通常受限于网络MTU(最大传输单元)。 将数据分割成较小数据块进行传输,以适应不同网络环境。 拥塞控制 不使用拥塞控制,网络拥塞时不会降低发送速率。...返回值: sendto函数返回值是一个long类型整数,表示发送字节数。具体返回值有以下几种可能: 如果返回值大于0,则表示数据已经成功发送到了目标地址。返回值代表实际发送字节数。...需要注意是,sendto函数不保证数据可靠传输。也就是说,发送数据可能会丢失,或者接收方可能无法按照发送顺序接收数据。如果需要可靠数据传输,应该使用TCP协议而不是UDP。...此外,在使用sendto函数之前,需要确保已经通过socket函数创建了一个套接字,并且(对于面向连接套接字类型)已经通过connect函数与目标地址建立了连接(尽管对于UDP,连接通常不是必需,但也可以通过

    14110

    用户空间协议栈设计和netmap综合指南,将网络效率提升到新高度

    局域网中主机收到ARP应答跟新ARP表后,再发送数据时,就会发送到虚假MAC地址导致通信故障,就无法和网关正常通信,导致无法访问互联网。...1.4.2、ARP欺骗原理 ARP欺骗并不会使网络无法正常通信,而是通过冒充网关或其他主机 使得 到达网关或主机数据流量通过攻击主机进行转发。...向目的服务器发送回显请求,目的服务器发送回显应答;计算发送回显请求数据包时间与接收到回显应答数据包时间差,就是数据包一去一回所需要时间。 (2)traceroute命令。...说明一次数据帧可以发送或接收最大数据量;以字节为单位,一般是是1500,不同网络类型MTU不同。 (1)如果一次发送发送数据超过MTU,需要在IP层对数据进行分片。...我们知道网络是有 环 存在,设计TTL目的是防止数据包因为不正确路由表等原因造成无线循环而无法送达导致耗尽网络资源。

    9600

    网络唤醒(WOL)全解指南:原理篇

    数据包发送通常使用无连接传输协议,如 UDP发送端口为 7 或 9 ,这只是通常做法,没有限制。...大部分数据包在数据链路层(OSI模型第2层)上发送,当发送时,使用广播地址广播到给定网络上,不使用IP地址(OSI模型第3层)。...当然这是绝大部分情况,幻数据包也可以使用特定 IP 地址进行发送。...开了四个线程,1-255大概需要30多秒,稍微有点慢,而且 .NET Ping 类在 Android 上无法限制秒数。第二种方式,百度到,直接向整个网段发送 UDP 消息,2秒解决战斗。...下面给出发送数据包方法: public static async void Wake(string broadcast, int port, byte[] mac) { using (UdpClient

    4.7K10

    C++ 使用Socket实现主机间UDPTCP通信

    buf: 待发送数据起始地址指针。可以是任何能够被转为char*数据类型。 len: 待发送数据大小。尽量避免发送数据大于1300字节数据包,详见p75。...udpClient.cpp在本地(windows)。...如果返回0,说明连接另一端发送了一个FIN数据包,承诺没有更多需要发送数据。...send函数 通过连接socket使用send函数发送数据: 因为连接socket存储了远程主机地址信息,所以不需要传入地址参数: int send(SOCKET s,const char *...注意:和UDP不同,是将数据放到socket输出缓冲区中,由socket库来决定在将来某一时刻发出。 len: 传输字节数量。注意:与UDP不同,不需要保持这个值低于链路层MTU

    2.8K40

    TCPIP具体解释–TCPUDP优化设置总结& MTU相关介绍「建议收藏」

    (当我们UDP包中数据多于MTU(1472)时,发送IP层须要分片fragmentation进行传输,而在接收方IP层则须要进行数据报重组,因为UDP是不可靠传输协议。...:假设两台主机之间通信要通过多个网络,那么每一个网络链路层就可能有不同MTU。...由于client默认情况下使用Nagle算法,应该使用默认内核缓冲区,不应该设置SO_SNDBUF为0。一旦TCP 栈拼接起来数据包超过MTU值。...仅仅要Winsock内核缓冲区 得到一个大于MTU数据块,就会发送若干个数据包。剩下最后一个数据包发送方除了最后一个数据包,都不会 被200毫秒计时器触发。...除非新设置缓冲区经过測试的确比默认大小更高效。 4、假设传输数据不用保证可靠性,使用UDP

    1.7K10

    鸿蒙之接收UDP消息

    UDP 为应用程序提供了一种无需建立连接就可以发送封装 IP 数据包方法。 Internet 传输层有两个主要协议,互为补充。...无连接UDP,它除了给应用程序发送数据包功能并允许它们在所需层次上架构自己协议之外,几乎没有做什么特别的事情。面向连接是 TCP,该协议几乎做了所有的事情。...UDP有不提供数据包分组、组装和不能对数据包进行排序缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达UDP用来支持那些需要在计算机之间传输数据网络应用。...退出多路广播组 JoinMulticastGroup 将 UdpClient 添加到多路广播组 Receive 返回已由远程主机发送 UDP 数据文报 Send 将 UDP 数据文报发送到远程主机...使用sendto()函数向服务器发送数据 使用recvfrom()函数从服务器接受消息 使用close()函数关闭此socket char recvline[1024]; void udp_thread

    1.3K30

    Android | UDPCS通信实战案例(简易聊天室)

    /因为UDP通过DatagramPacket封装数据, // 而DatagramPacket创建必须传入一个字节数组,这个数组便是通信数据包大小限制...// //这里指定是1024,也就是客户端发送过来数据包, // 每次不能超过1024个字节,1byte = 8bit...对象, 接收时封装传入参数:缓存字节数组引用及其长度; 发送封装传入参数:缓存字节数组引用及其长度、封装了客户端(发送目的地)ip、portInetAddress对象; 然后通过receive...()和send()操作即可; 创建UDP客户端 先创建java文件,调试完毕之后,再移植到Android上来; udp包下,创建一个UdpClient: package com.lwp.sample.udp...程序运行第二次时候, 如果第一次运行没有对链接进行关闭, 则第一次运行端口号会被占用, 导致第二次相关程序运行时Socket对象无法实例化, 以致于Socket对象为空(NULL),

    92340

    linux 命令:ping、fping、gping、hping3、tracert、traceroute

    gping 就是带有图表 Ping gping 特点: 绘制多个主机 ping 时间图 通过 –cmd 参数 绘制命令执行时间 自定义颜色 Windows、Mac 和 Linux 支持 用法:...即发送不可恢复IP碎片, 通过这个可以让你了解更多 MTU PATH DISCOVERY。 -g --fragoff 设置断偏移。...而且Hping3 能够对发送探测进行更加精细控制,方便用户微调探测结果。当然,Hping3 端口扫描性能及综合处理能力,无法与 Nmap 相比。一般使用它仅对少量主机少量端口进行扫描。...traceroute 通过发送数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上每个设备 traceroute 要测3次。...通过指定网关发送数据包(IPv4 最多8个,IPv6 最多 127 个) -I --icmp 使用 ICMP ECHO 进行跟踪 -T --tcp

    4.3K30
    领券