Сервер, который получает последовательность целых чисел - PullRequest
1 голос
/ 22 декабря 2011

Я изучаю программирование сокетов на Java.Я пытаюсь решить проблему, которая заключается в следующем:

  1. Наличие сервера, который принимает соединение от одного клиента одновременно.Эта часть решена.
  2. Теперь я хочу, чтобы сервер получил последовательность целых чисел в текстовом формате, которая завершится при обнаружении ситуации окончания файла в потоке устройства чтения сокетов.
  3. I 'я пытаюсь сделать это, используя DataInputStream и DataOutputStream, потому что это единственное, что я знаю до сих пор.

Может кто-нибудь помочь?Я не знаю, как на 2-й части моей проблемы.

У меня есть следующий код:

  public class Exercise{

    public static void main(String args[]) throws Exception {
        ServerSocket server= new ServerSocket(6789);
        while(true) {
            try {
                Socket aux= server.accept();
                DataInputStream dis = new DataInputStream(aux.getInputStream());
                DataOutputStream dos = new DataOutputStream(aux.getOutputStream());
                while(dis != null) {
                }
            }
            catch (EOFException e) {
                out.println("The client finish execution!");
                continue;
            }
        }
    }
}

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

Вам необходимо определить протокол обмена данными .Так работают все сетевые приложения.Клиент и сервер должны согласовать ФОРМАТ и ПОСЛЕДОВАТЕЛЬНОСТЬ данных, которые будут обмениваться.Самое основное, что вы можете сделать, это отправить следующее в последовательности

START

1,2,3,4,5,6

STOP

В тот момент, когда вы получаете START, вы знаете, что следующая строка ввода - это ваша последовательность целых чисел, которую вы можете проанализировать, используя вашу собственную логику.

Как только вы получаете STOP, вы знаете, что больше не будет никаких данных, и вы останавливаетесь и возвращаете ответ / подтверждение клиенту.

0 голосов
/ 22 декабря 2011

Посмотрите на эту страницу на веб-сайте оракула. ​​http://www.oracle.com/technetwork/java/socket-140484.html#server должен содержать всю информацию, необходимую для настройки и получения данных String из сокетного соединения.

Обработка последовательности целых чисел будет зависеть от форматирования, поэтому вы должны убедиться, что они разделены пробелом или каким-либо стандартным разделителем, таким как пробел или запятая (то есть «1 2 3 4»или «1,2,3,4»), а затем используйте StringTokenizer или аналогичный класс, чтобы разбить строку на отдельные целочисленные строки, а затем выполнить синтаксический анализ с Integer.parseInt ();

...