// Я думаю, что проблема, скорее всего, связана с кодом PrintWriter, но я не уверен,
/ * Я пытаюсь создать класс ChatClient. java. Мне дали файл ChatServer.class. Я могу успешно подключиться к серверу, но отправленные сообщения не могут быть просмотрены другими пользователями. Предполагается, что он сможет работать с локальным соединением между двумя терминалами windows. * /
import java.net.*;
import java.io.*;
import java.util.*;
public class ChatClient {
private String host;
private int portNum;
private String user;
public ChatClient (String host, int portNum) {
this.host = host;
this.portNum = portNum;
}
void setUser(String userName) {
this.user = userName;
}
String getUser() {
return this.user;
}
public void execute() {
try {
Socket socket = new Socket (host, portNum);
System.out.println("Connecting to server");
new ReadThread(socket, this).start();
new WriteThread(socket, this).start();
System.out.println("Connected!");
} catch (UnknownHostException ex) {
System.out.println("Server not found");
} catch (IOException e) {
System.out.println("I/O Error");
}
}
class ReadThread extends Thread {
private Socket socket;
private ChatClient client;
private BufferedReader reader;
public ReadThread (Socket socket, ChatClient client) {
this.socket = socket;
this.client = client;
try {
InputStream input = socket.getInputStream();
reader = new BufferedReader(new InputStreamReader(input));
} catch (IOException e) {
System.out.println("Could not get InputStream");
}
}
public void run() {
while (true) {
try {
String response = reader.readLine();
System.out.println("\n" + response);
if (client.getUser() != null) {
System.out.print("[" + user + "]");
}
} catch (IOException e) {
System.out.println("Error reading server data");
break;
}
}
}
}
class WriteThread extends Thread {
private Socket socket;
private ChatClient client;
private PrintWriter writer;
public WriteThread (Socket socket, ChatClient client) {
this.socket = socket;
this.client = client;
try {
OutputStream output = socket.getOutputStream();
writer = new PrintWriter(output, true);
} catch (IOException e) {
System.out.println("Could not get OutputStream");
}
}
public void run() {
Scanner in = new Scanner(System.in);
Console console = System.console();
String userName = console.readLine("Enter name:");
client.setUser(userName);
writer.println(user);
String nameText;
do {
nameText = console.readLine("[" + user + "]");
String s = in.nextLine();
writer.println(nameText + s);
} while (!s.equals("bye"));
try {
socket.close();
} catch (IOException e) {
System.out.println("Error writing server data");
}
}
}
public static void main(String[] args) {
if (args.length < 2) {
return;
}
String host = args[0];
int portNum = Integer.parseInt(args[1]);
ChatClient client = new ChatClient(host, portNum);
client.execute();
}
}