UDP地址已在使用?(UDP Address already in use?)

2019-07-20 13:51发布

我下面的教程UDP http://docs.oracle.com/javase/tutorial/networking/datagrams/broadcasting.html ,我已经复制所有的代码和编译它,现在如果我第一次,然后服务器编译客户端,服务器打印了这一点,在控制台

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);

纵观错误,在我看来,这是事做对端口的侦听,我怎么能去修复呢?

帆布

Answer 1:

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

虽然它也有可能是甲流没有正确关闭。 如果您运行的是IDE,重新启动IDE要解决这个问题,虽然偶尔我不得不重新启动计算机。 可能是一个更好的解决方案来解决这个问题,但这是为我工作。



Answer 2:

你可以做到以下几点:

使用netstat coomand查看哪些应用程序正在使用该端口。 然后使用任务列表和TASKKILL杀死在该端口的应用程序。



文章来源: UDP Address already in use?