当前位置: 首页 > 知识库问答 >
问题:

异常:java.net.BindException:无法分配请求的地址

朱季
2023-03-14

我想发送和接收数据报套接字,但遇到了异常java.net。BindException:无法分配请求的地址。我传递了要通信的服务器的正确IP地址和正确的端口号。

try {
    SocketAddress sockaddr = new InetSocketAddress("203.100.77.54", 8000);
    DatagramSocket sock = new DatagramSocket(sockaddr);
    DatagramPacket pack = new DatagramPacket(bData, bData.length);
    sock.send(pack);
} catch (FileNotFoundException fnfe) {
    Log.e(LOG_TAG, "FileNotFoundException");
} catch (SocketException se) {
    Log.e(LOG_TAG, "SocketException");
} catch (UnknownHostException uhe) {
    Log.e(LOG_TAG, "UnknownHostException");
} catch (IOException ie) {
    Log.e(LOG_TAG, "IOException");
}

请帮帮我。

共有3个答案

宋景福
2023-03-14

这是一个更高级别的答案:

Direct UDP和Direct TCP一样,是针对特定地址的,比如Bob。所以如果我把数据包发给Bob,你就不能监听它们——你只能自己监听。所以如果你试图为Bob打开一个监听器,你的设备会告诉你不允许。

除非您使用多播UDP或类似的东西,否则您只能收听打算直接发送给您的内容,因此IP或任何地址必须是设备自己的地址。

丌官积厚
2023-03-14

像这样试试

 String messageStr = "Hello Android!";
 int server_port = 8000;
 DatagramSocket s = new DatagramSocket();
 InetAddress local = InetAddress.getByName("203.100.77.54");
 int msg_length = messageStr.length();
 byte[] message = messageStr.getBytes();
 DatagramPacket p = new DatagramPacket(message, msg_length, local, server_port);
 s.send(p);
景翰音
2023-03-14

DatagramSockets不是用目标地址创建的。它们是用自己的本地绑定地址创建的,或者没有,这会在首次使用时导致默认绑定。目标地址在构造DatagramPacket时指定,或在connect()方法中指定。

 类似资料:
  • 问题内容: 我想在我的应用程序中使用低端口(Spring Web上的SNMP陷阱接收器+ Tomcat7)。正如我之前在此线程将低端口绑定到Ubuntu Server上的Java程序中所告诉的那样,我收到了错误权限被拒绝。然后,我将tomcat7用户组更改为root。但是之后,我得到了java.net.BindException:无法分配请求的地址错误。对于我尝试的每个端口(低端口或高端口),我总

  • 我想在我的应用程序中使用低端口(SpringwebTomcat7上的SNMP陷阱接收器)。正如我之前在Ubuntu服务器上的这个线程Binding Low Port to Java Program中所说的,我得到了一个错误Permission denied。然后我将tomcat7用户组更改为root。但在那之后,我得到了java.net。BindException:无法分配请求的地址错误。对于我尝

  • 我正在使用 GNetLib 在我的计算机上测试我的服务器。每当我使用我的网络的IP时,它都不会让我绑定。 我的主机是“76 . 5 . 43 . 21”//没有张贴我的实际IP,但你得到了要点。端口是43594,我已经用canyouseeme.org测试了连接,它显示成功。 以下是完整的错误: 问题是我使用家庭网络的IP,还是库限制了我可以使用的IP?

  • 无法解决此错误,我首先尝试更改关闭端口,但它不起作用,然后我更改了连接器端口,但仍然不起作用。

  • 当运行以下代码时,我在说java.net。绑定异常:绑定失败:EADDRNOTAVAIL(无法分配请求的地址)。我不知道为什么会这样。代码如下: 谢谢!

  • 问题内容: 当我尝试设置套接字服务器时,出现错误消息: 整个代码是最简单的: 我100%确定端口已转发,Windows防火墙已关闭。什么都不会阻塞端口9999。还有什么会出错? 问题答案: 正如其他人指出的那样,这很可能与使用port的另一个进程有关。在Windows上,运行以下命令: 并且它应该列出任何阻塞端口的内容。当然,您必须去手动在Task Manager中杀死那些程序。如果仍然无法解决问