Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Виснет многопоточный Socket-Server.??

29K
28 апреля 2012 года
webdev
56 / / 08.05.2010
Здравств, идея проста сделать сервер для двух игроков и чтоб была возможность не только одним слушать порт. Тоисть многопоточный. Взял с туториалов стандартные примеры, но почему-то клиент виснет при чтении.
Виснет на этой строке
 
Код:
this.responseMessage = dataInputStream.readUTF();
Я не могу отдебажить сервер. Не срабатывают брейкпоинты... Гляньте где ошибка...
Запуск и коннект происходит, - смотрел с дебаггером.
А вот дальше ничего посмотреть не могу..

Вот два стандартных класса(пока что тестовый вариант).
Код:
package chess.network;

import java.io.IOException;
import java.net.ServerSocket;

public class ChessServer {

    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = null;
        boolean listening = true;
        System.err.println("SERVER!: 4444.");
        try {
            serverSocket = new ServerSocket(4444);
        } catch (IOException e) {
            System.err.println("Could not listen on port: 4444.");
            System.exit(-1);
        }
        while (listening) {
            new ChessMultiServerThread(serverSocket.accept()).start();
        }
        serverSocket.close();
    }
}
Код:
package chess.network;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class ChessMultiServerThread extends Thread {

    private Socket socket = null;

    public ChessMultiServerThread(Socket socket) {
        super("KKMultiServerThread");
        this.socket = socket;
    }

    public void run() {
        try {
            System.out.println("Thred");
            PrintWriter out = new PrintWriter(socket.getOutputStream());
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            System.out.println("In Stream: "+in.toString());
            out.write("To Client");
            System.out.println("Out Stream: "+out.toString());
            out.flush();
            out.close();
            in.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
И вот мой тестовый клиент.
Код:
package chess.network;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class CHClient {

    private Socket clientSocket;
    private InputStream inputStream;
    private OutputStream outputStream;

    private DataInputStream dataInputStream;
    private DataOutputStream dataOutputStream;

    private final String hostName = "localhost";
    private final int PORT = 4444;

    private String requestMessage = null;
    private String responseMessage = null;

    public CHClient() {
        System.out.println("-CLIENT-");

        try {
            this.clientSocket = new Socket(this.hostName, this.PORT);

            this.inputStream = clientSocket.getInputStream();
            this.outputStream = clientSocket.getOutputStream();

            this.dataInputStream = new DataInputStream(inputStream);
            this.dataOutputStream = new DataOutputStream(outputStream);

                this.requestMessage = "Lallllaaaaaa";
                sendMessage(this.requestMessage);
                this.responseMessage = dataInputStream.readUTF();
                System.out.println(this.responseMessage);
            System.out.println("ClientStopped!");

        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                this.inputStream.close();
                this.outputStream.close();
                this.clientSocket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private void sendMessage(String msg) {
        try {

            this.dataOutputStream.writeUTF(msg);
            this.dataOutputStream.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Спасибо.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог