最近,我看了有关Java UDP API的一些教程,并看了DatagramSocket
andDatagramPacket
类的javadocs 。该类DatagramSocket
包含几个connect()
和一个disconnect()
方法。但是UDP不是没有连接的协议吗?
这些connect
和disconnect
方法做什么?
从DatagramSocket#connect(InetAddress地址,int端口)的javadocs中:
将套接字连接到该套接字的远程地址。当套接字连接到远程地址时,数据包只能发送到该地址或从该地址接收。默认情况下,未连接数据报套接字。
...
当插座连接,
receive
并且send
将不执行对传入和传出的分组的任何安全检查,比匹配包的和插座的地址和端口等。在发送操作中,如果设置了数据包的地址,并且数据包的地址和套接字的地址不匹配,IllegalArgumentException
则将抛出。连接到多播地址的套接字只能用于发送数据包。
因此,这实际上不是建立与TCP相同的“连接”的方法,而是一种防止与其他地址之间收发数据包的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句