我正在尝试使用套接字连接到服务器。我在Ubuntu上使用Intellij IDEA和JAVAFX项目。我目前正面临这个错误:
"引起:java.net.ConnectException:拒绝连接"
此错误指向的代码是:
Socket serverSocket = new Socket("127.0.0.1", 8080);
ConnectionHandler handler = new ConnectionHandler(serverSocket);
String[] dirs = handler.receiveDirs();
System.out.println(dirs[0]);
如果有人可以请帮助我并告诉我可能出现的问题,请告诉我任何可能的修复方法!谢谢!
答案 0 :(得分:2)
您收到该错误的可能原因是:
安全措施检查:
答案 1 :(得分:0)
在端口8080上,本地主机上没有运行任何东西来连接套接字。您可以在该端口上运行Tomcat等服务器,然后就可以了。
这是一个独立的示例,它将服务器套接字设置为在本地运行(它只是来自客户端的回显输入)。输出将是“hello,jewelsea”。
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class ConnectToServer {
public static void main(String[] args) throws IOException, InterruptedException {
// server code.
ServerSocket serverSocket = new ServerSocket(8082);
Thread serverThread = new Thread(() -> {
while(true) {
try {
Socket connection = serverSocket.accept();
try (
BufferedReader serverReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
Writer serverWriter = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
) {
serverWriter.write("hello, " + serverReader.readLine() + "\n");
serverWriter.flush();
}
} catch (IOException e) {
e.printStackTrace();
} catch (Throwable t) {
t.printStackTrace();
throw t;
}
}
});
serverThread.setDaemon(true);
serverThread.start();
// client code.
Socket clientSocket = new Socket("127.0.0.1", 8082);
try (
Writer clientWriter = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
BufferedReader clientReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
) {
clientWriter.write("jewelsea\n");
clientWriter.flush();
String response = clientReader.readLine();
System.out.println(response);
}
}
}
您可能不想直接使用套接字,而是使用更高级别的API,例如jax-rs。
答案 2 :(得分:0)
如果正确编写代码,则还需要控制连接的IP。由于您的Wifi适配器具有公用IP地址,并且如果您正在使用该IP地址,您将收到一条消息,称为连接被拒绝,因为Wifi适配器将本地Wifi地址分配给该网络中的计算机。但是,一些网络提供商也分配了公共Wifi。坦白地说,您可以尝试使用服务器的本地IP将客户端连接到服务器。