首页 > 解决方案 > 设置一个简单的服务器/客户端,得到“java.net.ConnectException:连接被拒绝:连接”

问题描述

我正在努力设置我的第一个服务器/客户端连接。我的 GUI 有一个对话框。按下其中的发送按钮后,我打电话给client.connect().

它第一次工作,但是当我继续并重新打开对话框(按发送后它会自行关闭)并尝试再次执行相同操作时,我将收到“连接被拒绝”错误。我怀疑这是由于服务器仍然连接到原始套接字并且按钮事件client.connect()再次触发。(这将尝试连接一个新的)。但我不知道如何确保不会发生这种情况。一旦对话框关闭,我必须以某种方式关闭客户端套接字,对吗?我该如何实施?还是问题出在其他地方?这只是一个感觉有点正确的猜测。

这是我的Client课程(它包括connect()上面调用的方法):

public class Client extends Application
{
    private String string = "";
    Socket s;

    @Override
    public void start(Stage primaryStage)
    {
        VBox root = new VBox();
        Scene scene = new Scene(root, 380, 200);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) throws IOException
    {
        Client client = new Client();
        client.connect();
        launch(args);
    }

    public void connect() throws UnknownHostException, IOException
    {
        s = new Socket("localhost",3000);
        System.out.println("Connected");
        PrintWriter dos = new PrintWriter(s.getOutputStream());
        dos.println(string);
        dos.flush();
    }
}

这是我的Server课:

public class Server
{
    public static void main(String[] args) throws UnknownHostException, IOException
    {
        ServerSocket server = new ServerSocket (3000);
        Socket s = server.accept();
        System.out.println("Connected");
        BufferedReader dis = new BufferedReader(new InputStreamReader(s.getInputStream()));
        System.out.println(dis.readLine());
    }
}

请注意,这是我第一次在 java 中设置服务器/客户端,因此尝试使用本地主机和可能明显的问题。

标签: javasocketsserversocketconnectexception

解决方案


推荐阅读