我正在跟随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);
看到这些错误,我认为与监听端口有关,那么我该如何修复呢?
画布