【发布时间】:2019-10-13 17:24:39
【问题描述】:
我正在尝试进行在线聊天,但是当我启动代码时,我总是得到 java.net.BindException: Address already in use (Bind failed)。我已经尝试过多次更改端口,但我总是得到相同的异常。有时代码仍然执行并且一切正常,但异常对我来说仍然是一个问题。我知道有与我类似的问题,但只有 Windows 用户的解决方案,我是 Mac 用户。代码如下(还没写完,错误出现在Server部分@new ServerSocket();)
public Server(Client c) {
try {
ServerSocket serverSocket = new ServerSocket(65531);
while (true) {
Socket s = serverSocket.accept();
new Thread() {
@Override
public void run() {
super.run();
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(s.getInputStream()));
String message = bufferedReader.readLine();
System.out.println("Antwort vom Client: " + message);
c.receivedMessage(message);
System.out.println("Adresse: "+s.getInetAddress().toString());
System.out.println(s.getInetAddress().getHostAddress());
s.close();
} catch (Exception e) {
}
}
}.run();
}
} catch (IOException e) {
e.printStackTrace();
}
}
编辑:
我在应用程序运行前后和期间检查了端口,它只在运行时使用,所以服务器套接字有点工作,但我仍然得到一个异常
【问题讨论】:
-
顺便说一句,
new Thread().run()有点毫无意义。你的意思是.start()? -
我不知道。我是多线程的新手。这只是我从网站复制的代码。但是改变它并没有解决它(它也适用于运行。
-
您是否尝试研究该异常试图告诉您什么?
-
是的,这意味着该端口已被使用,但我检查了 Nmap,应该没有任何服务在其上运行
-
nmap正在网络层从外部检查它。你应该检查你的进程列表
标签: java serversocket