`

JAVA UDP基础

阅读更多
UDP是在IP上发送数据的另一种协议。不可靠,无法知道数据是否到达,也无法知道数据的不同

部分是否已发送时的数据到达。

UDP为什么有使用之地:在实时音频或视频中丢失或交换数据包只会出现噪声。噪声是可以容忍

的。但是不可容忍停顿,
UDP的实现分为两个类:DatagramPacket(将数据字节填充到数据报的UDP包中)和

DatagramSocket(可以收发UDP数据报)。

与TCP的ServerSocket和Socket不同之处:1.UDP没有两台主机间唯一连接的概念,一个DatagramSocket可以从多个独立主机收发数据。此

处的socket并不专注于一个连接。
2.TCP将网络视为流,通过socket获取输入输出流来收发数据,UDP以数据包形式发送

DatagramPacketUDP数据报基于IP建立的,每台主机有65536个端口号可以使用。数据报中字节数限制为65536-8

个字节(首部要用8个字节)

构造函数:
   
public DatagramPacket(byte[] buffer,int length)
    public DatagramPacket(byte[] buffer,int offset,int length)
如果试图构造一个长度超过buffer的DatagramPacket,将抛出IllegalArgumentException

可以在数据报发送之后并且发送之前修改数据报的data.
getInetAddress():返回一个包含远程主机地址的InetAddress对象。如果数据报是internet接

收的,返回的地址是发送机器的地址。如果是客户端,则返回的是寻址地址。
getPort():返回远程端口
SocketAddress getSocketAddress():返回一个包含远程主机和端口的SocketAddress对象。
byte[] getData():返回一个字节数组,其中包含数据报中的数据
getLength():返回数据报中数据的字节数。它与getData()返回的数组长度不一定相等,
     getLength()返回的值可能小于getData()返回的数组长度。



setData(byte[] data):
setData(byte[] data,int offset,int length)

setLength(int length):会改变内部缓冲区中包含实际数据报数据的字节数,而不包含未填充数据的空间。

DatagramSocket:
     构造函数:DatagramSocket()
     构造函数:DatagramSocket(int port):如果无法创建socket,则抛出SocketException(原因为:指定的端口已被占用或者低于1024的端口没有特权 )

TCP端口和UDP端口没有关联,TCP和UDP可以使用相同的端口号

for(int port=1024;port<=65535;port++)
		{
			try
			{
				DatagramSocket server=new DatagramSocket(port);
				server.close();
			}
			catch (SocketException e)
			{
				System.out.println("There is a server on port:"+port);
			}
		}


DatagramSocket(int port,InetAddress interface)
DatagramSocket(SocketAddress interface)
void receive(DatagramPacket dp)throws IOException
:与ServerSocket的accept方法类似,此方法会阻塞调用线程,直到数据报到达。如果程序除了等待数据报外还有其他操作,就应当在单独的线程中调用receive()。

void connect(InetAddress host,int port):
connect方法实际上不建立TCP意义上的连接。它确实知名DatagramSocket只对远程主机和指定远程端口发包。试图向另外的主机或端口发包将抛出IllegalArgumentException异常

disconnect():中止已连接DatagramSocket的"连接",这样可以再次收发任何主机和端口的包。


setSoTimeout(int timeout):默认0永不超时
void setReceiveBufferSize(int size)throws SocketException:
建议对来自此socket的输入进行缓冲时使用的字符字节数,但是底层完全可以忽略此建议。
   
分享到:
评论

相关推荐

    Java视频教程4—JavaUDP

    Java视频教程 Java网络编程基础 JavaUDP

    Java基础知识点总结.docx

    二、 Java语法基础 5 数据类型 5 运算符号 14 语句 15 函数 15 方法重载(Overloadjing)与重写(Overriding) 16 数组 17 总结 18 三、 常见关键字 20 四、 面向对象★★★★★ 21 五、 封装(面向对象特征之一)★...

    JAVA实现局域网群聊(开源)

    用JAVA实现的UDP群聊小软件,安装了JAVA的电脑都可以编译运行,附源码,适合初学者体会学习UDP MULTICAST的基础知识。

    Java UDP 网络聊天 基于Socket

    udp编写的网络聊天程序,既可以接收数据也可以发送数据。结合多线程

    Java_Socket_UDP_2.zip_udp java 服务

    udpUDP UDP方式的网络编程中,客户端和服务器端的实现步骤 通过基础的示例演示UDP方式的网络编程在Java语言中的实现方式。 总结

    基于UDP的网络编程2

    Java编程基础-基于UDP的网络编程2

    Java高手真经(编程基础卷)光盘全部源码 免积分

    javanio.zip 23.NIO非阻塞通信(Socket/UDP实例、简单聊天系统) javarmi.zip 24.RMI编程(HelloWorld例、计算器实例) javacorba.zip 25.Corba编程(HelloWorld例、计算器实例) 第6部分(4个程序包) java...

    java编程基础,应用与实例

    21.1.1 TCP与UDP 390 21.1.2 端口与套接字 390 21.2 TCP程序设计基础 391 21.2.1 InetAddress类 392 21.2.2 ServerSocket类 393 21.2.3 Socket类 394 21.3 单向通信 396 21.3.1 接收字符串的服务器 ...

    JAVA基础课程讲义

    第一章 JAVA入门 10 计算机语言发展史 10 机器语言 10 汇编语言 10 高级语言 10 其他高级语言 11 JAVA发展简史 12 JAVA为什么能够流行? 13 JAVA各版本的含义 13 JAVA技术体系架构 14 JAVA的特性和优势 14 JAVA应用...

    java基础资料

    java基础资料和代码的开发。(集合,jdbc,file操作,多线程,tcp和udp等一些知识)

    【IT十八掌徐培成】Java基础第20天-04.UDP协议.zip

    【IT十八掌徐培成】Java基础第20天-04.UDP协议.zip

    基于UDP的网络编程-1

    Java网络编程基础-基于UDP的网络编程-1

    Java高手真经(编程基础卷)光盘全部源码

    javanio.zip 23.NIO非阻塞通信(Socket/UDP实例、简单聊天系统) javarmi.zip 24.RMI编程(HelloWorld例、计算器实例) javacorba.zip 25.Corba编程(HelloWorld例、计算器实例) 第6部分(4个程序包) java...

    Java高手真经 编程基础卷.part1.rar

    Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级特性:反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。随书附赠光盘内容为《Java高手真经(编程基础卷...

    Java高手真经 编程基础卷.part3.rar

    Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级特性:反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。随书附赠光盘内容为《Java高手真经(编程基础卷...

    Java高手真经 编程基础卷.part4.rar

    Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级特性:反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。随书附赠光盘内容为《Java高手真经(编程基础卷...

    Java高手真经 编程基础卷.part2.rar

    Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级特性:反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。随书附赠光盘内容为《Java高手真经(编程基础卷...

    Java核心编程技术源码

    Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级特性:反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。随书附赠光盘内容为《Java高手真经(编程基础卷...

Global site tag (gtag.js) - Google Analytics