当前位置: 首页 > 面试题库 >

UDP地址已被使用?

赫连坚
2023-03-14
问题内容

我正在遵循http://docs.oracle.com/javase/tutorial/networking/datagrams/broadcasting.html上的UDP教程,现在我已经复制并编译了所有代码,如果我先编译客户端然后再编译服务器,服务器在控制台中将其打印出来

Exception in thread "main" java.net.BindException: Address already in use: Cannot bind
at java.net.PlainDatagramSocketImpl.bind0(Native Method)
at java.net.PlainDatagramSocketImpl.bind(Unknown Source)
at java.net.DatagramSocket.bind(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at QuoteServerThread.<init>(QuoteServerThread.java:19)
at MulticastServerThread.<init>(MulticastServerThread.java:10)
at MulticastServer.main(MulticastServer.java:3)

QuoteServerThread行19是

socket = new DatagramSocket(12345);

MulticastServerThread行10是

public MulticastServerThread() throws IOException {
    super("MulticastServerThread"); // line 10
}

MulticastServer第3行是

public class MulticastServer {
    public static void main(String[] args) throws java.io.IOException {
        new MulticastServerThread().start(); // line 3
    }
}

如果我先启动服务器,然后启动客户端,则客户端在控制台中将其打印出来

Exception in thread "main" java.net.BindException: Address already in use: Cannot bind
at java.net.PlainDatagramSocketImpl.bind0(Native Method)
at java.net.PlainDatagramSocketImpl.bind(Unknown Source)
at java.net.DatagramSocket.bind(Unknown Source)
at java.net.MulticastSocket.<init>(Unknown Source)
at java.net.MulticastSocket.<init>(Unknown Source)
at MulticastClient.main(MulticastClient.java:9)

MulticastClient第9行是

MulticastSocket socket = new MulticastSocket(12345);

看着错误,在我看来,这与监听端口有关,我该如何解决呢?

帆布


问题答案:

这可能是因为您已经在运行服务器的实例。一次只有一台服务器可以侦听给定端口。检查是否已经在运行实例(如果正在使用Eclipse,则应在命令窗口中看到它)并在运行另一个实例之前终止它。

尽管也有可能流没有正确关闭。如果您正在运行IDE,则重新启动IDE应该可以解决该问题,尽管有时我不得不重新启动计算机。可能是解决此问题的更好解决方案,但这对我有用。



 类似资料:
  • 问题内容: 我在Windows XP Pro上使用Glassfish 3.0.1,JVM 1.6.0_21; 我不知道我的环境到底发生了什么变化,但是当我尝试部署企业应用程序(ejb模块+应用程序客户端模块)时,我立即获得了该堆栈跟踪信息。 除Glassfish之外,端口3820上没有任何运行。 这可能是什么原因?一些内部过程冲突? 关于如何进一步调试的任何提示? 编辑 这正是我尝试过的: 如您所

  • 服务器程序: 客户端程序: 当我执行这个程序时。我收到了这样的错误“java.net.BindException:地址已在使用中:JVM_Bind”但在它正常工作之前。有人能帮我解决这个问题吗?

  • 问题内容: 有时,每当我重新启动基于Java Struts Mysql和Jboss 4.05版本构建的应用程序时,都会收到以下错误消息: 地址已在使用中:JVM_Bind 我知道的唯一解决方法是重新启动计算机,然后重试,它将起作用。否则,有时我执行Ctrl-Alt-Del并停止所有与Java相关的过程,有时这也可行。 但是,确切的原因是什么,我们如何预防这个问题呢? 问题答案: 已使用的地址:JV

  • 问题内容: 运行webdriver时,运行3分钟后,出现以下异常,导致Webdriver崩溃。 我仅使用一个webdriver实例和一个FirefoxDriver配置文件。 问题答案: 您的出站端口已用完。这意味着您在两分钟之内执行了数千个出站连接。解决方案:使用连接池,或降低程序速度。

  • 在运行tomcat进程时,我一直在日志中得到这个绑定异常。它并没有从一开始就禁止我的进程,但这仍然是一个问题。 05-Oct-2017 13:42:47.896严重[main]org.apache.coyote.abstractProtocol.init无法初始化与ProtocolHandler关联的endpoint [“http-nio-*********-不是8080端口”]java.net.

  • 我试图在Ubuntu 12.04中运行以下命令 并得到以下错误 在检查8080端口时,输出是 我的问题 为什么我会犯错误,以及如何消除这个错误?