Настройка простого сервера / клиента, получение "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, следовательно, localhost, чтобы попробовать это, и, вероятно, очевидная проблема.