Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Виснет многопоточный Socket-Server.?? 
:(
    Опции темы
Killer_13
Дата 28.4.2012, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Здравств, идея проста сделать сервер для двух игроков и чтоб была возможность не только одним слушать порт. Тоисть многопоточный. Взял с туториалов стандартные примеры, но почему-то клиент виснет при чтении.
Виснет на этой строке 
Код
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();
        }
    }
}



Спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0416 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.