почему отдельные темы не создаются? - PullRequest
2 голосов
/ 03 июля 2011

Я новичок в программировании сокетов и пытаюсь написать простое приложение для командной строки.Теперь я использую приведенный ниже код, чтобы принять соединение, а затем создать новый поток для того же, но новый поток не создается, и поддерживается не более одного клиента (что обычно, когда потоки не используются),

public class chatserver extends Thread{
    public static Socket client;
    public static void main(String a[]) throws Exception{
        ServerSocket srv = new ServerSocket(4444);
        if((client = srv.accept())!=null){
            new newthread(client);
        }
    }
}
class newthread extends Thread{
    private Socket client;
    public newthread(Socket client){
        super("chatchild");
        this.client = client;
        start();
}

почему потоки не создаются? Я привел примеры на "oracle.com", один из которых содержит код для того же самого, но я не могу выяснить точную последовательность, что произойдет и когда ???фрагмент кода exaple, который принимает соединение и создает поток: *

while (listening)
        new KKMultiServerThread(serverSocket.accept()).start();

теперь здесь прослушивается bool var sat в true, но в любом месте кода он не имеет значения false .???работать?

Ответы [ 3 ]

2 голосов
/ 03 июля 2011

Где ваши методы бега? Без метода run в Thread или Runnable я не думаю, что ваш поток сможет что-либо делать.

2 голосов
/ 03 июля 2011

Вы должны постоянно вызывать accept () , чтобы создать другие темы:

public static void main(String a[]) throws Exception{
    ServerSocket srv = new ServerSocket(4444);

    while (listening) {
        new newthread(srv.accept());
    }
}

Переменная listen должна быть установлена ​​в false, если и когда вы хотите остановить сервер.

0 голосов
/ 05 июля 2011

Наконец-то я решил проблему, дело в том, что метод socket.accept () не оставался активным после первого контакта с клиентом ... с методом run ничего не случилось, это свойство метода socket.accept () ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...