Здравствуйте. Помогите пожалуйста разобраться со следующей проблемой.
Пишу чат. Нужно сделать так, чтобы к серверу могли подключиться несколько клиентов. Взаимодействие с клиентами должно происходить в разных потоках.
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class Server implements Runnable {
private final PrintStream writerToScreen = System.out;
final ServerSocket serverSocket = new ServerSocket(9001);
static List<Thread> list = new ArrayList<Thread>();
public Server() throws IOException {
}
public static void main(String[] args) throws IOException {
Thread thread = new Thread(new Server());
thread.start();
}
@Override
public void run() {
try {
ServerSocket serverSocket = new ServerSocket(9001);
Socket clientSocket = serverSocket.accept();
PrintWriter writerToClient = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader readerFromClient = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String line;
while ((line = readerFromClient.readLine()) != null) {
writerToScreen.println("recieved: " + line);
writerToClient.println("I recieved your line [" + line + "]! sending back");
}
serverSocket.close();
writerToClient.close();
readerFromClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Однако не могу решить проблему того, что
ServerSocket serverSocket = new ServerSocket(9001);
должен быть одним для всех объектов
Server. Статическим его сделать не получается. Возможно многопоточность можно организовать другим образом,