java中udp(java中udp接收数据不全)

本文目录一览:

java中UDP文件传输怎么实现?

java UDP连接,如果要发送文件的话,你只能自己定义一系列的协议

因为TCP UDP 双方发送都是二进制数据

那么这个实现非常复杂

得不停的发送数据,写数据,建议使用http协议

java 中怎么使用UDP?

发送步骤:

使用 DatagramSocket(int port) 建立socket(套间字)服务。

将数据打包到DatagramPacket中去

通过socket服务发送 (send()方法)

关闭资源

import java.io.IOException;  

import java.net.*;  

  

public class Send {  

  

    public static void main(String[] args)  {  

          

        DatagramSocket ds = null;  //建立套间字udpsocket服务  

          

        try {  

          ds = new DatagramSocket(8999);  //实例化套间字,指定自己的port  

        } catch (SocketException e) {  

            System.out.println(“Cannot open port!”);  

            System.exit(1);   

        }  

          

        byte[] buf= “Hello, I am sender!”.getBytes();  //数据  

        InetAddress destination = null ;  

        try {  

            destination = InetAddress.getByName(“192.168.1.5”);  //需要发送的地址  

        } catch (UnknownHostException e) {  

            System.out.println(“Cannot open findhost!”);  

            System.exit(1);   

        }  

        DatagramPacket dp =   

                new DatagramPacket(buf, buf.length, destination , 10000);    

        //打包到DatagramPacket类型中(DatagramSocket的send()方法接受此类,注意10000是接受地址的端口,不同于自己的端口!)  

          

        try {  

            ds.send(dp);  //发送数据  

        } catch (IOException e) {  

        }  

        ds.close();  

    }  

}

接收步骤:

使用 DatagramSocket(int port) 建立socket(套间字)服务。(我们注意到此服务即可以接收,又可以发送),port指定监视接受端口。

定义一个数据包(DatagramPacket),储存接收到的数据,使用其中的方法提取传送的内容

通过DatagramSocket 的receive方法将接受到的数据存入上面定义的包中

使用DatagramPacket的方法,提取数据。

关闭资源。

import java.net.*;  

  

public class Rec {  

  

    public static void main(String[] args) throws Exception {  

          

        DatagramSocket ds = new DatagramSocket(10000);  //定义服务,监视端口上面的发送端口,注意不是send本身端口  

          

        byte[] buf = new byte[1024];//接受内容的大小,注意不要溢出  

          

        DatagramPacket dp = new DatagramPacket(buf,0,buf.length);//定义一个接收的包  

          

        ds.receive(dp);//将接受内容封装到包中  

          

        String data = new String(dp.getData(), 0, dp.getLength());//利用getData()方法取出内容  

          

        System.out.println(data);//打印内容  

          

        ds.close();//关闭资源     

    }  

}

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

UDP报文的完整性,不是JAVA语言本身能够保证的,主要还是靠网络通信协议。一般来说1500个字节应该不会出现在网络中只传输一部分过来的情况,因为1500个字节还在一个UDP包的范围内,因此会一次性发送的。但是,根据经验,超过1K的udp报文,丢包率通常是比较高的。当然,局域网环境下这个丢包率会小很多。

另外还有一个问题,你的消息接收的缓冲区要足够大,如果你的缓冲区只有1000个字节的话,那么100%你收不到一个完整的包。所以,设置合理的缓冲区也是必要的。

原创文章,作者:QXDF8,如若转载,请注明出处:https://www.506064.com/n/130683.html

(0)
QXDF8QXDF8
上一篇 2024-10-03
下一篇 2024-10-03

相关推荐

  • python入门错误集合(python集合例题)

    本文目录一览: 1、Python如下报错是什么意思 2、python调试程序BUG的心得技巧分享 3、python初学问题,colon expected什么意思 4、”python…

    编程 2024-10-03
  • 清理图层pug,清理图层命令cass

    本文目录一览: 1、PS插件安装以后如何在PS的时候应用? 2、Flash中导入png文件,透明部分有像素问题 3、autoCAD图样如何复制到另一张图? 4、PS插件安装以后如何…

    编程 2024-10-14
  • Sha1加密解密详解

    Sha1是一种加密方式,常用于数据加密和签名验证。本文将从以下几个方面对Sha1加密解密进行详细阐述。 一、Sha1加密原理 Sha1加密使用的是一种SHA-1算法,它是由美国国家…

    编程 2024-10-03
  • php转义字符问题(php特殊字符转义)

    本文目录一览: 1、php 转义字符 2、如何在PHP中转义正则表达式字符 3、请问php中的转义字符是什么 能详细说一下吗 4、php转义字符,这是什么意思? 5、php转义字符…

    编程 2024-10-03
  • Python os.path join函数的用法及示例说明

    一、简介 在Python的os.path模块中,join()函数被广泛应用于路径的组合,它使用操作系统特定的分隔符将多个路径组合成一个。在不同的操作系统中,路径的分隔符是不同的,在…

    编程 2024-10-04
  • dbeaver导出表结构和数据

    一、导出表结构 1、在dbeaver中选择要导出结构的表 2、右键点击该表,选择“导出” 3、选择“数据定义(DDL)”选项卡 4、选择要导出的对象,比如表、索引、触发器等 5、点…

    编程 2024-10-03
  • 如何正确使用批量归一化改善深度学习模型的性能

    深度学习网络通常有多个隐藏层,这些隐藏层中的每一层都包括许多神经元。在每一层中,每个神经元都接收先前层的输入,并将其加权并传递给下一层。这种模型的训练通常非常耗时,而且还需要大量的…

    编程 2024-10-04
  • iisphpcgi的简单介绍

    本文目录一览: 1、怎样去架设IIS的PHP环境 2、如何让iis支持php 3、IIS映射什么环境下用到php-cgi.exe 网站-属性-主目录-配置.php 选择的文件是ph…

    编程 2024-10-04
  • flex如何跟java结合(Java flex)

    本文目录一览: 1、FLEX有直接调用JAVA的方法吗 2、如何利用Flex调用java类做登陆验证 3、flex+java怎么实现文件的上传 4、java+flex怎么上传文件 …

    编程 2024-10-03
  • Python 中的 rarfile模块

    在下面的教程中,我们将讨论 Python 编程语言的 rarfile模块。我们将理解 rarfile模块的不同类以及一些例子。 那么,让我们开始吧。 Python 中的 rarfi…

    编程 2024-10-03

发表回复

登录后才能评论