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

为什么Netty不绑定公共IP地址

韩阳飙
2023-03-14

我遇到了这种奇怪的情况,我可以将ServerBootstrap与本地IP地址绑定,但当我尝试使用我的公共IP地址时,它抛出了一个异常:< code >线程" main " org . JBoss . netty . channel . channel异常:无法绑定到:/57.88.173.132:5055

有人可以向我解释出了什么问题吗???顺便说一句,我使用网络3.6.1

我改变了地址,它不是真实的,它们是随机数,但端口是真实的

这是密码

私有静态最终字符串BIND_ADDRESS="57.88.173.132";私有静态最终int PORT=5055;

public Server()
{
    try
    {
        startup();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
}
private void startup() throws IOException
{
    ServerBootstrap serBootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(Executors.newCachedThreadPool(),Executors.newCachedThreadPool())); 
    serBootstrap.setPipelineFactory(new PipelineFactory());
    serBootstrap.bind(new InetSocketAddress(BIND_ADDRESS,PORT));

这里是抛出的异常

Exception in thread "main" org.jboss.netty.channel.ChannelException: Failed to bind to: /57.88.173.132:5055
    at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:301)
    at com.game.server.Server.startup(Server.java:33)
    at com.game.server.Server.<init>(Server.java:22)
    at com.game.server.Server.main(Server.java:44)
Caused by: java.net.BindException: Cannot assign requested address: bind
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Unknown Source)
    at sun.nio.ch.Net.bind(Unknown Source)
    at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
    at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
    at org.jboss.netty.channel.socket.nio.NioServerBoss$RegisterTask.run(NioServerBoss.java:193)
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.processTaskQueue(AbstractNioSelector.java:367)
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:291)
    at org.jboss.netty.channel.socket.nio.NioServerBoss.run(NioServerBoss.java:42)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

共有1个答案

白阳煦
2023-03-14

这实际上不是一个棘手的问题。

这很清楚。在大多数情况下,这意味着该端口已经由其他进程侦听,要检测它,您可以使用netstat命令。

但也有一些特殊情况:

此处的注释1:

这可能与/etc/hosts中的错误配置有关。在我的例子中,它是这样的:192.168.1.11 localhost而不是127.0.0.1 localhost

从这里备注2:

错误显示无法分配请求的地址。这意味着您需要使用其中一个网络接口的正确地址或 0.0.0.0 来接受来自所有接口的连接。

已编辑。

 类似资料:
  • 问题内容: 如果我在中保留注释,它将像正常一样开始(返回预期结果)。 但是,如果我设置了它,那么它会说OK,但是elasticsearch的状态是。 在这种情况下我做错了什么? 系统:Ubuntu 14.04 LTS 更新:通过将其绑定到进行修复。 问题答案: 更新:通过将其绑定到0.0.0.0进行了修复。

  • 我有一个Angular应用程序,有一个API,它连接并调用一个在服务器上建立的数据库,该数据库具有一个公共IP。 第二,你有什么想法为什么会发生这种情况吗? 谢谢。

  • 问题内容: 我如何将expressjs服务器绑定到特定IP 就像是 等效于nodejs: 问题答案: 在调用listen时,ExpressJS 会将参数向下传递给模块,因此您的示例应该可以正常工作。 不是吗?

  • 我希望创建一个EMR集群,其中出于安全原因,没有为任何实例分配公共IP地址。我已经能够在我的VPC中启动集群,并使用我自己的自定义安全组,但由于某些原因,默认情况下所有节点都分配了一个公共IP地址。 我在EMR CLI文档中找不到有关如何禁用此功能的任何信息:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-

  • 下面是出现主要错误的代码 以下是关于我的代码的更多上下文:

  • 我们举个例子: 一个常见的解决方案是转移到一个抽象类,但是在我的具体案例中,我有一个枚举的接口,所以在这里不适用。我想这不是被忽略了,就是因为接口背后的原始想法,即它们是可用方法的“契约”,但我想我需要关于这是怎么回事的输入。 我读过“为什么Java 8接口方法中不允许使用”final“?”,其中说: 默认方法的基本思想是:它是具有默认实现的接口方法,派生类可以提供更具体的实现 与关联问题一样,由