Java 如何修复BindException:无法分配请求的地址?

Java 如何修复BindException:无法分配请求的地址?,java,udp,Java,Udp,我需要从客户端更改主机的IP地址。 我使用UDP命令和多播套接字获取此主机的IP地址(currentIp),并使用此IP地址成功建立TCP连接。 更改此主机IP地址的命令需要DatagramSocket,因为我需要首先获取要包含在更改IP地址命令中的主机设备MAC地址。TCP连接完成后,我关闭MulticastSocket UDP套接字,以便打开DatagramSocket,但出现以下错误: java.net.BindException:无法分配请求的地址:无法绑定 在尝试获取具有相同端口号的D

我需要从客户端更改主机的IP地址。 我使用UDP命令和多播套接字获取此主机的IP地址(currentIp),并使用此IP地址成功建立TCP连接。 更改此主机IP地址的命令需要DatagramSocket,因为我需要首先获取要包含在更改IP地址命令中的主机设备MAC地址。TCP连接完成后,我关闭MulticastSocket UDP套接字,以便打开DatagramSocket,但出现以下错误:

java.net.BindException:无法分配请求的地址:无法绑定

在尝试获取具有相同端口号的DatagramSocket套接字之前,除了关闭MulticastSocket套接字之外,我还需要做些什么,或者我缺少了其他什么

DatagramSocket socket;
private boolean ChangeIpAddress(String newIp) {
    DatagramSocket socket;
    try {
        socket = new DatagramSocket(30718, InetAddress.getByName(currentIp));
    } catch (SocketException ex) {
        ...

您使用的主机名的IP地址似乎不正确。您需要找到
etc/hosts
或其定义的位置。

我使用的主机名实际上是ip地址字符串(currentIp)。我相当肯定它是有效的,因为它与TCP连接使用的IP地址相同。