我创建了一个 DatagramSocket 并在它上面调用了 getPort,它总是返回 -1。在 javadocs 中,对于空的 DatagramSocket 构造函数,它表示它将自身附加到可用端口。我非常怀疑我的计算机是否正在使用每个端口。它实际上在生命周期的哪个时刻获得了分配给它的端口号?
DatagramSocket.getPort
返回套接字连接的端口——即连接另一端的端口,如果你已经连接了套接字。
由于您尚未连接套接字,因此它返回 -1。
要在您的终端获取端口号,请getLocalPort
改用。