gpt4 book ai didi

Java服务器客户端绑定(bind)错误

转载 作者:行者123 更新时间:2023-12-01 12:37:43 28 4
gpt4 key购买 nike

我已经制作了一个服务器/客户端,设置为通过套接字进行通信。但是我在连接它们时遇到了一些问题。

首先,我在端口 7777(已打开)上启动服务器,然后启动客户端,但出现 java.net.BindException。我的编码错误吗?

服务器端:

public Server(int port) { // port = 7777
this.port = port; // dont bother with this line
try {
socket = new DatagramSocket(port);
} catch (SocketException ex) {
return;
}
run = new Thread(this, "Server");
run.start(); // starts thread to listen for sent client packets
}

客户端:

private boolean openConnection(String address, int port) { // returns boolean to check for established connection as well as establish it, port = 7777
try {
socket = new DatagramSocket(port); // THE ERROR IN OUTPUT POINTS TO THIS LINE
ip = InetAddress.getByName(address);
return true;
} catch (UnknownHostException | SocketException ex) {
ex.printStackTrace();
return false;
}
}

堆栈跟踪:

java.net.BindException: Address already in use: Cannot bind
at java.net.DualStackPlainDatagramSocketImpl.socketBind(Native Method)
at java.net.DualStackPlainDatagramSocketImpl.bind0(DualStackPlainDatagramSocketImpl.java:81)
at java.net.AbstractPlainDatagramSocketImpl.bind(AbstractPlainDatagramSocketImpl.java:95)
at java.net.DatagramSocket.bind(DatagramSocket.java:376)
at java.net.DatagramSocket.<init>(DatagramSocket.java:231)
at java.net.DatagramSocket.<init>(DatagramSocket.java:284)
at java.net.DatagramSocket.<init>(DatagramSocket.java:256)
at chatprogram.client.Client.openConnection(Client.java:45)
at chatprogram.client.Client.<init>(Client.java:35)
at chatprogram.client.Login1$8.run(Login1.java:104)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

CMD netstat -an 输出:

我没有 10 个代表,所以:http://prntscr.com/4f1hmfhttp://prntscr.com/4f1hs3

最佳答案

不要在客户端创建DatagramSocket。只需创建一个Socket,这样它就不会在本地绑定(bind)到特定端口(就像服务器那样):

new Socket(address, port);

关于Java服务器客户端绑定(bind)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25431436/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com