Базовая многосекционная программа - PullRequest
0 голосов
/ 10 декабря 2011

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

Мне трудно понять две вещи:

-какая точная линия, которая принимает данные? Я предполагаю, что это не метод Server.accept (), так как этот метод используется для инициации соединения с конкретным клиентом (путем создания нового потока, как упоминалось ранее).

-Как я могу принять более 1 пакета (скажем, это строка)?

1 Ответ

2 голосов
/ 10 декабря 2011

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

Какая именно строка принимает данные?

Чтобы принять данные от клиента, вам нужно обернуть входной поток клиента в некоторый входной поток и затем вызвать соответствующую функцию чтения входного потока.

void readx(Socket con)
{
    String line=new String();
    BufferedReader bin=  new BufferedReader(new InputStreamReader(con.getInputStream());
    while((line = bin.readLine()) != null) //Read new lines coming from the server
        System.out.println(line);
}

Это всего лишь пример, у вас могут быть другие оболочки InputStream, такие как DataInputStream и соответствующие им функции чтения.

Как я могу принять более 1 пакета (скажем, это строка)?

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

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