2011-12-10 2 views
0

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

Что я нахожу трудно это понять 2 вещи:

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

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

ответ

2

Небольшая коррекция, каждый новый поток, который вы создаете и начинаете с 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 пакета (скажем, это строка)?

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

Смежные вопросы