java udp(java中如何判断udp报文的完整性)

2023-08-04 08:20:03 100

java udp(java中如何判断udp报文的完整性)

本文目录

java中如何判断udp报文的完整性


UDP报文的完整性,不是JAVA语言本身能够保证的,主要还是靠网络通信协议。一般来说1500个字节应该不会出现在网络中只传输一部分过来的情况,因为1500个字节还在一个UDP包的范围内,因此会一次性发送的。但是,根据经验,超过1K的udp报文,丢包率通常是比较高的。当然,局域网环境下这个丢包率会小很多。
另外还有一个问题,你的消息接收的缓冲区要足够大,如果你的缓冲区只有1000个字节的话,那么100%你收不到一个完整的包。所以,设置合理的缓冲区也是必要的。

关于java UDP文件传输的问题


使用UDP协议进行文件传输不能保证正确性,很容易发生丢包的情况。建议在进行较大文件传输的时候使用TCP的Socket和ServerSocket类进行传输。在数据量小于65600字节的时候使用UDP是安全的
如果一定要使用UDP方式进行传输的话,为了提高传输的准确性,可以限制一下传输速度,方法是在发送端每次发送后sleep一下,即在发送端程序的dataSocket.send(dataPacket);一句后加上:
TimeUnit.MICROSECONDS.sleep(1);
不过这种方法也不能保证传输绝对准确,所以还是建议用TCP的方式
程序本身应该是能够达到效果的,不知道错误提示是什么。测试之前要看下发送端的filePath文件是否存在,貌似防火墙也有影响,测试之间最好关闭防火墙。下面是我的测试程序,接收端是类A1,接收端是类A2,发送端的文件filePath是D盘根目录下的a1.mkv:
接收端:
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class A1 {
public static DatagramSocket dataSocket;
public static final int PORT=7;
public static byte receiveByte;
public static DatagramPacket dataPacket;
public static void main(String args) throws IOException{
dataSocket = new DatagramSocket(PORT);
DataOutputStream fileOut = new DataOutputStream(new BufferedOutputStream(new BufferedOutputStream(new FileOutputStream(“D:\\a.mkv“))));
int i = 0;
while (i == 0)// 无数据,则循环
{
receiveByte = new byte;
dataPacket = new DatagramPacket(receiveByte, receiveByte.length);
dataSocket.receive(dataPacket);
i = dataPacket.getLength();
// 接收数据
if (i 》 0) {
// 指定接收到数据的长度,可使接收数据正常显示,开始时很容易忽略这一点
fileOut.write(receiveByte,0,i);
fileOut.flush();
i = 0;// 循环接收
}
}
}
}
发送端:
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Inet4Address;
import java.util.Date;
public class A2 {
public static DatagramSocket dataSocket;
public static final int PORT=7;
public static byte sendDataByte;
public static DatagramPacket dataPacket;
public static void main(String args) throws IOException, InterruptedException{
String filePath=“D:\\a1.mkv“;
DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath)));
dataSocket = new DatagramSocket(PORT+1);
sendDataByte = new byte;
int read=0;
long a=new Date().getTime();
while(true){
if (fis != null) {
read = fis.read(sendDataByte);
}
if (read == -1) {
System.out.println(new Date().getTime()-a);
break;
}
dataPacket = new DatagramPacket(sendDataByte, sendDataByte.length,(Inet4Address) Inet4Address.getByName(“localhost“), PORT);
dataSocket.send(dataPacket);
TimeUnit.MICROSECONDS.sleep(1);//限制传输速度
}
}
}

如何实现Java udp超时重传机制(类似tcp那样)


  对一个连接而言,若能够了解端点间的传输往返时间(RTT,Round Trip Time),则可根据RTT来设置一合适的RTO。显然,在任何时刻连接的RTT都是随机的,无法事先预知。TCP通过测量来获得连接当前RTT的一个估计值,并以该RTT估计值为基准来设置当前的RTO。自适应重传算法的关键就在于对当前RTT的准确估计,以便适时调整RTO。
为了搜集足够的数据来精确地估算当前的RTT,TCP对每个报文都记录下发送出的时间和收到的确认时间。每一个(发送时间,确认时间)对就可以计算出一个RTT测量值的样本(Sample RTT)。TCP为每一个活动的连接都维护一个当前的RTT估计值。该值是对已经过去的一个时间段内该连接的RTT了两只的加权平均,并作为TCP对连接当前实际的RTT值的一种估计。RTT估计值将在发送报文段时被用于确定报文段的RTO。为了保证它能够比较准确地反应当前的网络状态,每当TCP通过测量获得了个新的RTT样本时,都将对RTT的估计值进行更新。不同的更新算法或参数可能获得不同的特性。
最早的TCP曾经用了一个非常简单的公式来估计当前网络的状况,如下
R《-aR+(1-a)MRTP=Rb其中a是一个经验系数为0.1,b通常为2。注意,这是经验,没有推导过程,这个数值是可以被修改的。这个公式是说用旧的RTT(R)和新的RTT (M)综合到一起来考虑新的RTT(R)的大小。但又可以看到,这种估计在网络变化很大的情况下完全不能做出“灵敏的反应”,于是就有下面的修正公式:
Err=M-AA《-A+gErrD《-D+h(|Err|-D)RTO=A+4D,这个递推公式甚至把方差这种统计概念也使用了进来,使得偏差更加的小。而且,必须要指出的是,这两组公式更新,都是在 数据成功传输的情况下才进行,在发生数据重新传输的情况下,并不使用上面的公式进行网络估计,理由很简单,因为程序已经不在正常状态下了,估计出来的数据 也是没有意义的。

关于java Udp多线程的问题


1,理解正确,几个线程各子锁定自己的同步锁,当然是没有什么用。对于竞争资源,必须锁定同一个锁,你可以new 一个Object用于锁,也可以用class做锁,反正都要是同一个。
2,理解有偏差,其他线程也会被调度,不可能一个线程一直sleep,其他线程都不工作了,影响范围没有那么大,仅限于需要进入同一个同步锁的,它们进不了工作。
所谓占着茅坑不拉shi,就是这个状态了。
3,多线程的好处是充分利用CPU的资源,实现并发。例如你说的通讯,往往是花百分之几的时间CPU处理数据,剩下的绝大部分时间,都是在等待网络数据。使用多线程可以充分利用这段时间。

java中UDP,DCP TCP与IP的区别是什么


不知道楼主是什么意思,UDP,DCP TCP与IP都是传输协议吧,那和Java有什么关系呢?
1. IP
是网络层中最重要的协议。
IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。
2. TCP
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。
TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。
面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。
3.UDP
UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网落时间协议)和DNS(DNS也使用TCP)。
欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。
4.DCP?是不是写错了,应该是CDP吧!~
思科发现协议(CDP:Cisco Discovery Protocol) 思科发现协议 CDP 基本上是用来获取相邻设备的协议地址以及发现这些设备的平台。CDP 也可为路由器的使用提供相关接口信息。CDP 是一种独立媒体协议,运行在所有思科本身制造的设备上,包括路由器、网桥、接入服务器和交换机。需要注意的是,CDP是工作在 Layer 2 的协议,默认情况下,每60秒以 01-00-0c-cc-cc-cc 为目的地址发送一次组播通告,当达到180秒的holdtime上限后仍未获得邻居设备的通告时,将清除邻居设备信息。

TCP\u002FIP、HTTP、Socket和Servlet之间的逻辑关系、系统点是怎样的

TCP/IP是计算机网络通信中的传输层协议,在此之上是应用层,HTTP是一种应用层协议,除了HTTP还有多种应用层协议,所有的应用层都调用传输层协议的接口来进行数据传输。

Socket是编程接口,可以实现TCP/IP协议,进行网络通信,也可以实现UDP协议。HTTP应用都调用Socket接口来进行数据传输。

Servlet是java语言中的一种动态服务技术,可以动态的响应HTTP请求,虽然它也可以响应其他应用协议的请求,但最主要的用途还是HTTP。

Java语言中如何使用UDP协议进行数据传输的

java里UDP协议传送的方式细节已经封装了到类DatagramSocket里了,只要用DatagramSocket的对象进行传输数据就可以了.
底层实现是应该依靠本地C语言程序来完成的

java udp(java中如何判断udp报文的完整性)

本文编辑:admin

更多文章:


云南新闻最新消息今天(30岁硕士辞职到云南养老的新闻合理吗)

云南新闻最新消息今天(30岁硕士辞职到云南养老的新闻合理吗)

本篇文章给大家谈谈云南新闻最新消息今天,以及30岁硕士辞职到云南养老的新闻合理吗对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录30岁硕士辞

2024年6月25日 04:16

量子特攻汽车皮肤怎么涂装?量子特攻雷达怎么获得

量子特攻汽车皮肤怎么涂装?量子特攻雷达怎么获得

本文目录量子特攻汽车皮肤怎么涂装量子特攻雷达怎么获得量子特攻机仆按钮在哪里2022量子特攻车皮肤怎么用量子特攻雀跃之上怎么获得量子特攻有什么厉害的枪量子特攻有哪些技巧量子特攻荷马君怎么获得量子特工怎么找到自己的ID怎么搜别人的ID量子特攻汽

2024年6月28日 13:08

rmvb格式转换器手机版(怎样将手机上电影RMVB格式转换成MP4)

rmvb格式转换器手机版(怎样将手机上电影RMVB格式转换成MP4)

其实rmvb格式转换器手机版的问题并不复杂,但是又很多的朋友都不太了解怎样将手机上电影RMVB格式转换成MP4,因此呢,今天小编就来为大家分享rmvb格式转换器手机版的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目

2024年6月7日 02:37

3d斯诺克台球游戏下载(有什么3D斯诺克台球游戏有的发个下载地址!)

3d斯诺克台球游戏下载(有什么3D斯诺克台球游戏有的发个下载地址!)

“3d斯诺克台球游戏下载”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看3d斯诺克台球游戏下载(有什么3D斯诺克台球游戏有的发个下载地址!)!本文目录有什么3D斯诺克台球游戏有的发个下载地址!哪里有画面好的3D斯诺克台球游戏

2024年7月27日 22:00

印章生成器在线制作(怎么做电子公章)

印章生成器在线制作(怎么做电子公章)

本篇文章给大家谈谈印章生成器在线制作,以及怎么做电子公章对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录怎么做电子公章如何制作水印图片印章怎

2024年9月7日 14:50

全中国博客前二十排名,最新?求国内10个点击率最高的博客

全中国博客前二十排名,最新?求国内10个点击率最高的博客

本文目录全中国博客前二十排名,最新求国内10个点击率最高的博客全中国博客前二十排名,最新2005中文博客排名报告发布机构:时代财富科技公司摘要:2004年11月时代财富科技公司推出了中文Blog排行榜,得到了大众及媒介的广泛关注,也成为众多

2024年6月10日 03:34

超变传奇手机版(超变传奇手游都有哪些)

超变传奇手机版(超变传奇手游都有哪些)

各位老铁们,大家好,今天由我来为大家分享超变传奇手机版,以及超变传奇手游都有哪些的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录超变传奇手游都有哪些

2024年8月13日 16:26

2010版ppt(2010版ppt无法插入视频,提示所需的视频编码解码器没有安装)

2010版ppt(2010版ppt无法插入视频,提示所需的视频编码解码器没有安装)

本文目录2010版ppt无法插入视频,提示所需的视频编码解码器没有安装office2010的PPT是什么格式的PPT2010与2019有什么区别吗PPT2010版,怎么取消图片自动压缩2010版ppt无法插入视频,提示所需的视频编码解码器没

2023年5月26日 13:00

购买火车票12306官网免费下载(怎么下载12306网上订票官网)

购买火车票12306官网免费下载(怎么下载12306网上订票官网)

大家好,购买火车票12306官网免费下载相信很多的网友都不是很明白,包括怎么下载12306网上订票官网也是一样,不过没有关系,接下来就来为大家分享关于购买火车票12306官网免费下载和怎么下载12306网上订票官网的一些知识点,大家可以关注

2024年8月14日 10:06

尚科教育靠谱吗 知乎?尚科教育企业信誉怎样

尚科教育靠谱吗 知乎?尚科教育企业信誉怎样

本文目录尚科教育靠谱吗 知乎尚科教育企业信誉怎样尚科教育真的这么不靠谱吗杭州名淘尚科教育是否正规名淘尚科教育可信度高吗尚科教育靠谱吗 知乎市场上培训的教育机构还是较多的,我们应该怎么分辨区分,哪些是好的教育机构,哪些不是我们选择的目标,这个

2024年6月24日 15:14

fc游戏合集模拟器(求一款小时候玩的那种插卡游戏有三个人可以选择一个白衣服 一个红一个 最后一个是胖子)

fc游戏合集模拟器(求一款小时候玩的那种插卡游戏有三个人可以选择一个白衣服 一个红一个 最后一个是胖子)

这篇文章给大家聊聊关于fc游戏合集模拟器,以及求一款小时候玩的那种插卡游戏有三个人可以选择一个白衣服 一个红一个 最后一个是胖子对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录求一款小时候玩的那种插卡游戏有三个人可以选择一个白

2024年8月12日 18:56

格式工厂手机中文版官方下载(诚心要一个没毒中文版的视频文件格式转换工具知道的麻烦说哈)

格式工厂手机中文版官方下载(诚心要一个没毒中文版的视频文件格式转换工具知道的麻烦说哈)

本篇文章给大家谈谈格式工厂手机中文版官方下载,以及诚心要一个没毒中文版的视频文件格式转换工具知道的麻烦说哈对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本

2024年7月1日 07:55

cctv13新闻(cctv13新闻直播主持人)

cctv13新闻(cctv13新闻直播主持人)

各位老铁们好,相信很多人对cctv13新闻都不是特别的了解,因此呢,今天就来为大家分享下关于cctv13新闻以及cctv13新闻直播主持人的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录cctv13新闻直播主持人

2024年8月18日 20:45

成品网站78w78(78w78w飞机是什么意思)

成品网站78w78(78w78w飞机是什么意思)

“成品网站78w78”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看成品网站78w78(78w78w飞机是什么意思)!本文目录78w78w飞机是什么意思求一dreamweaver网页制作成品 .大概78页,第一页导航页,内容

2024年7月17日 16:18

43399游戏盒(手机43399游戏盒怎么安装)

43399游戏盒(手机43399游戏盒怎么安装)

大家好,今天小编来为大家解答以下的问题,关于43399游戏盒,手机43399游戏盒怎么安装这个很多人还不知道,现在让我们一起来看看吧!本文目录手机43399游戏盒怎么安装43399游戏盒的火影格斗MUGEN怎么设置键4399游戏盒发放的奖励

2024年7月2日 00:29

qq互联官网授权管理(用qq授权其他网站后,怎么取消 授权管理在哪里啊)

qq互联官网授权管理(用qq授权其他网站后,怎么取消 授权管理在哪里啊)

大家好,如果您还对qq互联官网授权管理不太了解,没有关系,今天就由本站为大家分享qq互联官网授权管理的知识,包括用qq授权其他网站后,怎么取消 授权管理在哪里啊的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录用qq

2024年6月27日 15:55

百度指数在线查询(百度指数怎么看)

百度指数在线查询(百度指数怎么看)

大家好,今天小编来为大家解答以下的问题,关于百度指数在线查询,百度指数怎么看这个很多人还不知道,现在让我们一起来看看吧!本文目录百度指数怎么看《百度指数》查看方法介绍百度指数舆情管家功能模块在哪搜如何查询某一“关键词”百度指数百度指数(官方

2024年7月14日 12:15

corel painter(corelpainter怎么保存)

corel painter(corelpainter怎么保存)

本篇文章给大家谈谈corel painter,以及corelpainter怎么保存对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录corel

2024年5月3日 10:19

手机抢票软件哪个好用?为什么12306抢票助手闪退

手机抢票软件哪个好用?为什么12306抢票助手闪退

本篇文章给大家谈谈抢票助手,以及手机抢票软件哪个好用对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录手机抢票软件哪个好用为什么12306抢票助手闪退分流抢票关闭同城选项在哪里抢票未开启,怎么账号登陆啊去哪儿如何别人挂机抢票哪个

2024年8月1日 19:55

小杨哥直播带货平台(小杨哥回应一亿买楼:公司的行为与我无关,直播带货到底有多赚钱)

小杨哥直播带货平台(小杨哥回应一亿买楼:公司的行为与我无关,直播带货到底有多赚钱)

大家好,小杨哥直播带货平台相信很多的网友都不是很明白,包括小杨哥回应一亿买楼:公司的行为与我无关,直播带货到底有多赚钱也是一样,不过没有关系,接下来就来为大家分享关于小杨哥直播带货平台和小杨哥回应一亿买楼:公司的行为与我无关,直播带货到底有

2024年6月22日 02:50

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1155
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索