【Java TCP/IP Socket】UDP Socket
来源:互联网 发布:淘宝店最高等级是什么 编辑:程序博客网 时间:2024/04/25 01:50
转载请注明出处:http://blog.csdn.net/ns_code/article/details/14128987
UDP的Java支持
UDP协议提供的服务不同于TCP协议的端到端服务,它是面向非连接的,属不可靠协议,UDP套接字在使用前不需要进行连接。实际上,UDP协议只实现了两个功能:
1)在IP协议的基础上添加了端口;
2)对传输过程中可能产生的数据错误进行了检测,并抛弃已经损坏的数据。
Java通过DatagramPacket类和DatagramSocket类来使用UDP套接字,客户端和服务器端都通过DatagramSocket的send()方法和receive()方法来发送和接收数据,用DatagramPacket来包装需要发送或者接收到的数据。发送信息时,Java创建一个包含待发送信息的DatagramPacket实例,并将其作为参数传递给DatagramSocket实例的send()方法;接收信息时,Java程序首先创建一个DatagramPacket实例,该实例预先分配了一些空间,并将接收到的信息存放在该空间中,然后把该实例作为参数传递给DatagramSocket实例的receive()方法。在创建DatagramPacket实例时,要注意:如果该实例用来包装待接收的数据,则不指定数据来源的远程主机和端口,只需指定一个缓存数据的byte数组即可(在调用receive()方法接收到数据后,源地址和端口等信息会自动包含在DatagramPacket实例中),而如果该实例用来包装待发送的数据,则要指定要发送到的目的主机和端口。
UDP的通信建立的步骤
UDP客户端首先向被动等待联系的服务器发送一个数据报文。一个典型的UDP客户端要经过下面三步操作:
1、创建一个DatagramSocket实例,可以有选择地对本地地址和端口号进行设置,如果设置了端口号,则客户端会在该端口号上监听从服务器端发送来的数据;
2、使用DatagramSocket实例的send()和receive()方法来发送和接收DatagramPacket实例,进行通信;
3、通信完成后,调用DatagramSocket实例的close()方法来关闭该套接字。
由于UDP是无连接的,因此UDP服务端不需要等待客户端的请求以建立连接。另外,UDP服务器为所有通信使用同一套接字,这点与TCP服务器不同,TCP服务器则为每个成功返回的accept()方法创建一个新的套接字。一个典型的UDP服务端要经过下面三步操作:
1、创建一个DatagramSocket实例,指定本地端口号,并可以有选择地指定本地地址,此时,服务器已经准备好从任何客户端接收数据报文;
2、使用DatagramSocket实例的receive()方法接收一个DatagramPacket实例,当receive()方法返回时,数据报文就包含了客户端的地址,这样就知道了回复信息应该发送到什么地方;
3、使用DatagramSocket实例的send()方法向服务器端返回DatagramPacket实例。
UDP Socket Demo
这里有一点需要注意:
UDP程序在receive()方法处阻塞,直到收到一个数据报文或等待超时。由于UDP协议是不可靠协议,如果数据报在传输过程中发生丢失,那么程序将会一直阻塞在receive()方法处,这样客户端将永远都接收不到服务器端发送回来的数据,但是又没有任何提示。为了避免这个问题,我们在客户端使用DatagramSocket类的setSoTimeout()方法来制定receive()方法的最长阻塞时间,并指定重发数据报的次数,如果每次阻塞都超时,并且重发次数达到了设置的上限,则关闭客户端。
- 【Java TCP/IP Socket】UDP Socket
- TCP/IP、UDP、Socket
- TCP/IP-UDP-Socket
- TCP/IP,udp,socket
- TCP/IP、UDP、Socket
- 【Java TCP/IP Socket】UDP Socket(含代码)
- 【Java TCP/IP Socket】UDP Socket(含代码)
- 【Java TCP/IP Socket】UDP Socket(含代码)
- 【Java TCP/IP Socket】UDP Socket(含代码)
- 【Java TCP/IP Socket】UDP Socket(含代码)
- 【Java TCP/IP Socket】UDP Socket(含代码)
- 【Java TCP/IP Socket】UDP Socket(含代码)
- 【Java TCP/IP Socket】UDP Socket(含代码)
- 【Java TCP/IP Socket】UDP Socket(含代码)
- 【Java TCP/IP Socket】UDP Socket(含代码)
- 【Java TCP/IP Socket】UDP Socket(含代码)
- TCP/IP、UDP、Socket编程
- Socket、Http、TCP/IP、UDP
- Javascript图片无缝滚动_妙味课堂
- 行程长度压缩算法
- js中使用正则表达式
- [Linux] shell read 命令参数 -p用法
- s:checkboxlist s:checkbox 初始值设置
- 【Java TCP/IP Socket】UDP Socket
- TextView键盘输入 弹出指定高度 点击return收回虚拟键盘
- SSL证书SOCKET登陆JAVA
- python 加载libpython2.6.so.1.0 报错
- exec eval source
- mysql表排重
- SPOJ 371 Boxes 最小费用流
- DVD标准参考网站
- 机器学习完整过程案例分布解析,python代码解析