Я изучаю код на Java. Я хочу написать простой чат с gui. Пока мое приложение работает через командную строку. Мне интересно создать gui для клиентской части. У меня проблемы с подключением к нему. Мой вопрос заключается в том, что я должен написать специальный класс для gui и построить такой объект в классе клиента и работать с ним? В частности, у меня возникла проблема с установлением связи между клиентом и сервером через gui. Код моей командной строки, как и для клиентской части, выглядит следующим образом. Я был бы признателен за любые советы по этому вопросу.Получение приложения из консоли в GUI
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 4444);
System.out.println("CLIENT: Server connected on port 4444");
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println("CLIENT: IN and OUT streams opened. Starting sending data...");
ClientInputThread thread = new ClientInputThread(socket);
thread.start();
String serverResponse;
while ((serverResponse = in.readLine()) != null) {
System.out.println("Server: " + serverResponse);
if (serverResponse.equals("koniec")) {
break;
}
}
System.out.println("CLIENT: Ending server connection. Closing client streams and socket.");
out.close();
in.close();
socket.close();
System.exit(0);
}
catch (UnknownHostException e) {
System.err.println("CLIENT: Trying to connect to unknown host: " + e);
System.exit(1);
}
catch (Exception e) {
System.err.println("CLIENT: Exception: " + e);
System.exit(1);
}
}
}
и
public class ClientInputThread extends Thread {
private PrintWriter out;
public ClientInputThread(Socket clientSocket) {
try {
out = new PrintWriter(clientSocket.getOutputStream(), true);
}
catch (IOException e) {
e.printStackTrace();
System.exit(1);
}
}
public void run() {
try {
BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
String userInput="";
while (userInput != null) {
userInput = console.readLine();
out.println(userInput);
out.flush();
if (userInput.equals("koniec")) {
break;
}
}
System.exit(0);
}
catch (IOException e) {
e.printStackTrace();
System.exit(1);
}
}
}
подключения не должны зависеть от того, является ли это CLI или GUI. –
Согласен. Но моя главная проблема заключается в том, как направить ответы сервера с консоли на, скажем, на JTextField в gui и на то, что меня еще больше озадачивает - где я должен разместить свой код gui - в отдельном классе или в классе клиента. – data
off topic .. Используйте свойства для хранения настроек сервера, таких как порт, URL-адрес и другие. Также используйте свойства для хранения сообщений об исключениях. И используйте регистратор вместо System.out или System.err. –