java.net.BindException:无法分配请求的地址,java.io.IOException:打开的文件太多

java.net.BindException:无法分配请求的地址,java.io.IOException:打开的文件太多,java,oracle,network-programming,Java,Oracle,Network Programming,我收到异常java.net.BindException:无法分配请求的地址, 如果发生此异常,我将尝试使用相同的端口和主机再次绑定它。但是在尝试绑定之后,我得到了java.io.IOException:打开的文件太多 堆栈跟踪: java.net.BindException: Cannot assign requested address at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.j

我收到异常java.net.BindException:无法分配请求的地址, 如果发生此异常,我将尝试使用相同的端口和主机再次绑定它。但是在尝试绑定之后,我得到了java.io.IOException:打开的文件太多

堆栈跟踪:

    java.net.BindException: Cannot assign requested address
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:444)
    at sun.nio.ch.Net.bind(Net.java:436)
    at sun.nio.ch.SctpServerChannelImpl.bind(SctpServerChannelImpl.java:109)
    at com.sun.nio.sctp.SctpServerChannel.bind(SctpServerChannel.java:184).
在一些失败之后:

    java.io.IOException: Too many open files
    at sun.nio.ch.IOUtil.makePipe(Native Method)
    at sun.nio.ch.EPollSelectorImpl.<init>(EPollSelectorImpl.java:65)
    at sun.nio.ch.EPollSelectorProvider.openSelector(EPollSelectorProvider.java:36)
    at java.nio.channels.Selector.open(Selector.java:227)
java.io.IOException:打开的文件太多
位于sun.nio.ch.IOUtil.makePipe(本机方法)
在sun.nio.ch.EPollSelectorImpl。(EPollSelectorImpl.java:65)
位于sun.nio.ch.EPollSelectorProvider.openSelector(EPollSelectorProvider.java:36)
位于java.nio.channels.Selector.open(Selector.java:227)

当java.net.BindException:无法分配请求的地址时,FD是否可能保持打开状态?

这通常是操作系统级别的问题。考虑增加可以打开的文件数量。在linux上,设置位于/etc/security/limits.conf中:

UID软文件4096 UID硬文件10240

当java.net.BindException:无法分配请求的添加时,FD是否可能保持打开状态

对。你必须自己关上插座。很明显你的插座漏了


我看不出重新绑定有什么意义。它仍然会失败。最初的绑定问题可能也是由于套接字泄漏造成的。

可能是ip问题到达了/etc/hosts,并将其更改为

所使用的主机名/ip是否正确且可用于本地计算机?你能用服务器套接字尝试相同的设置吗?你有一个套接字泄漏。也可能是选择器泄漏。重试绑定是没有意义的。发布你的代码。