Java 的 UDP _DatagramSocket.connect()_ 有什么作用?

Min*_*ock 4 java sockets connection udp protocols

我最近看到了一个关于 Java UDP API 的小教程,我查看了DatagramSocketDatagramPacket类的 javadocs 。该类DatagramSocket包含几个connect()和一个disconnect()方法。但是UDP不是没有连接的协议吗?

这些connectdisconnect方法有什么作用?

man*_*uti 7

来自DatagramSocket#connect(InetAddress address, int port)的 javadocs :

将套接字连接到此套接字的远程地址。当套接字连接到远程地址时,数据包只能发送到该地址或从该地址接收。默认情况下,未连接数据报套接字。

...

当插座连接,receive并且send将不执行对传入和传出的分组的任何安全检查,比匹配包的和插座的地址和端口等。在发送操作中,如果设置了数据包的地址并且数据包的地址和套接字的地址不匹配,IllegalArgumentException则会抛出an 。连接到多播地址的套接字只能用于发送数据包。

因此,它实际上并不是一种像 TCP 那样建立“连接”的方法,而是一种防止向/从其他地址发送或接收数据包的方法。