我想发送和接收数据报套接字,但遇到了异常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");
}
请帮帮我。
这是一个更高级别的答案:
Direct UDP和Direct TCP一样,是针对特定地址的,比如Bob。所以如果我把数据包发给Bob,你就不能监听它们——你只能自己监听。所以如果你试图为Bob打开一个监听器,你的设备会告诉你不允许。
除非您使用多播UDP或类似的东西,否则您只能收听打算直接发送给您的内容,因此IP或任何地址必须是设备自己的地址。
像这样试试
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);
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中杀死那些程序。如果仍然无法解决问