Java的udp_DatagramSocket.connect()_做什么?
我最近看了关于Java的UDP API的一个小教程,并且研究了DatagramSocket
和DatagramPacket
类的javadoc。类DatagramSocket
包含多个connect()
和一个disconnect()
方法。但是UDP不是没有连接的协议吗?
这两个connect
和disconnect
方法有什么作用?
将套接字连接到此套接字的远程地址。当套接字连接到远程地址时,只能向该地址发送数据包或从该地址接收数据包。默认情况下不连接数据报套接字。
.
连接套接字时,
receive
和send
将不会对传入和传出的数据包执行任何安全检查,只会匹配数据包和套接字的地址和端口。在发送操作中,如果设置了数据包的地址,并且数据包的地址和套接字的地址不匹配,则将抛出IllegalArgumentException
。连接到多播地址的套接字只能用于发送数据包。
因此,它实际上不是一种与TCP建立"连接"相同的方式,而是一种阻止向/从其他地址发送或接收数据包的方式。
相关文章