在Java中实现UDP协议编程
来源:互联网 发布:动态域名解析软件 编辑:程序博客网 时间:2024/05/21 07:29
在Java中实现UDP协议编程
一、 什么是UDP协议?
1、UDP(User Datagram Protocol)协议是用户数据报,在网络中它与TCP协议一样用于处理数据包。在OSI模型中,在第四层——传输层,处于IP协议的上一层。
2、UDP是一种无连接的协议,每个数据都是一个独立的信息,包括完整的源或目的地址,到达目的地的时间以及内容的正确性都是不能被保证的。
二、为什么要使用UDP?
在网络质量令人不十分满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以能常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。
三、在Java中操纵UDP
使用位于JDK中Java.net包下的DatagramSocket和DatagramPacket类,可以非常方便地控制用户数据报文。
1、 DatagramSocket类:创建接收和发送UDP的Socket实例
a) DatagramSocket():创建实例。通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。
b) DatagramSocket(int port):创建实例,并固定监听Port端口的报文。
c) DatagramSocket(int port, InetAddress localAddr):这是个非常有用的构建器,当一台机器拥有多于一个IP地址的时候,由它创建的实例仅仅接收来自LocalAddr的报文。
(注意:在创建DatagramSocket类实例时,如果端口已经被使用,会产生一个SocketException的异常抛出,并导致程序非法终止,这个异常应该注意捕获。)
d) receive(DatagramPacket d):接收数据报文到d 中。Receive方法产生一个“阻塞”(“阻塞”是一个专业名词,它会产生一个内部循环,使程序暂停在这个地方,直到一个条件触发。)
e) send(DatagramPacket d):发送报文d到目的地。
f) close():关闭DatagramSocket。在应用程序退出的时候,通常会主动释放资源,关闭Socket,但是由于异常地退出可能造成资源无法回收。所以,应该在程序完成时,主动使用此方法关闭Socket,或在捕获到异常抛出后关闭Socket。
2、 DatagramPacket:用于处理报文,将byte数组、目标地址、目标端口等数据包装成报文或者将报文拆卸成byte数组。
a) DatagramPacket(byte[] buf, int length, InetAddress addr, int port):从buf数组中,取出length长的数据创建数据包对象,目标是addr地址,port端口。
b) DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port):从buf数组中,取出offset开始的、length长的数据创建数据包对象,目标是addr地址,port端口。
c) DatagramPcket(byte[] buf, int offset, int length):将数据包中从offset开始、length长的数据装进buf数组。
d) DatagramPacket(byte[] buf, int length):将数据包中length长的数据装进buf数组。
e) getDate():它从实例中取得报文的byte数组编码。
三、ServerSocket:编写TCP网络服务程序,首先要用到java.net.ServerSocket类用以创建服务器Socket
1、构造方法:
a) ServerSocket(int port): 创建绑定到特定端口的服务器套接字。
b) ServerSocket(int port, int backlog):利用指定的backlog(服务器忙时保持连接请求的等待客户数量),创建服务器套接字并将其绑定到指定的本地端口号。
c) ServerSocket(int port, int backlog, InetAddess bindAddr):使用指定的端口、侦听backlog和要绑定到的本地IP地址创建服务器。
四、Socket:客户端要与服务器建立连接,必须先创建一个Socket对象。
1、常用构造方法
a) Socket(String host, int port):创建一个流套接字并将其连接到指定主机上的指定端口号。
b)Socket(InetAddress address, int port):创建一个流套接字并将其连接到指定IP地址的指定端口号。
(服务器端程序调用ServerSocket类中的accept()方法等待客户端的连接请求,一旦accept()接收了客户端连接请求,该方法返回一个与该客户端建立了专线连接的Socket对象,不用程序去创建这个Socket对象。建立了连接的两个Socket是以IO流的方式进行数据交换的, Java提供了Socket类中的getInputStream()返回Socket的输入流对象,getOutputStream()返回Socket的输出流对象。)
- 在Java中实现UDP协议编程
- 在Java中实现UDP协议编程
- 在java中实现UDP协议编程
- 在Java中实现UDP协议编程的方法
- 在Java中实现UDP协议编程的方法[转]
- 在Java中实现UDP协议编程的方法
- 在Java中实现UDP协议编程的方法
- 网络基础知识、在Java中实现UDP协议编程
- 在Java中实现UDP协议编程(DatagramSocket/DatagramPacket)
- 在Java中实现UDP协议编程(DatagramSocket/DatagramPacket)
- 在Java中实现UDP协议编程(DatagramSocket/DatagramPacket)
- 在Java中基于UDP协议编程
- 在Java中用DatagramSocket实现UDP协议编程
- java中进行socket编程实现tcp、udp协议总结
- java中网络编程------UDP协议(实现步骤)DatagramSocket对象
- 在java中实现TCP协议编程
- 在Java中实现TCP协议编程
- 在J2ME中基于UDP协议编程
- 面试常问的问题
- 简单的QQ分类下拉功能模仿
- JSP页面中“ path ”和 “ basepath ”
- JDBC4.0的新特性
- 头像
- 在Java中实现UDP协议编程
- STL之vector使用
- xml的简单了解
- ass字幕格式
- MFC第三天——RTTI & Dynamic Creation
- 判断单链表是否存在环型链表问题
- Windows Multithreading Sample
- 点击CComboBox控件的下拉按钮控制下拉框ListBox的显示和隐藏
- 淘宝广告搜索平台部面试