Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

8вариант / lab6 / ServerThread

.java
Скачиваний:
12
Добавлен:
08.06.2018
Размер:
1.98 Кб
Скачать
import java.io.*;
import java.net.*;
import java.util.*;
public class ServerThread extends Thread {
    BufferedReader reader;
	PrintWriter writer;
    Socket socket;
    Model model;
    String user;
	
	ServerThread(Socket socket, Model model) {
        this.socket = socket;
		this.model = model;
		
        try {
			reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            writer = new PrintWriter(socket.getOutputStream(), true);
        } catch (IOException e) {
            e.printStackTrace();
        }
	}

    @Override
    public void run() {
        try {
			writer.println("Write your name:");
            user = reader.readLine();
            synchronized (model.serverThreads) {
                Iterator<ServerThread> iter = model.serverThreads.iterator();
                while (iter.hasNext()) {
                    iter.next().writer.println(user + " in chat!");
                }
            }

            String message;
            
            while (true) {
                message = reader.readLine();
                synchronized (model.serverThreads) {
                    Iterator<ServerThread> iter = model.serverThreads.iterator();
                    while (iter.hasNext()) {
                        iter.next().writer.println(user + ": " + message);
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            allClose();
            synchronized (model.serverThreads){
                Iterator<ServerThread> iter = model.serverThreads.iterator();
                while (iter.hasNext()) {
                    iter.next().writer.println(user + " out chat!");
                }
            }
        }
    }

    private void allClose() {
        try {
            reader.close();
            writer.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
	
		
Соседние файлы в папке lab6