Как я могу исправить конфликты сообщений RTSP, полученных сервером от TCP-соединения? - PullRequest
0 голосов
/ 27 октября 2010

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

Хорошо, я делаю потоковое видео Java приложение.

  • клиенты набор TCP соединение с сервером для обмена RTSP сообщениями

  • сервер отправляет UDP клиенту , запрашивающему кадры в RTP пакетах с использованием типа полезной нагрузки JPEG, поскольку мое видео в формате MotionJPEG.

Чтобы быть более конкретным:

  1. Сервер использует потоки для обработки TCP-подключения клиентов к тому же порту
  2. Каждый подключенный клиент отправляется на сервер, который порт хочет использовать для передачи UDP.

Проблема в в том, что сервер получает и анализирует RTSP-сообщения по tcp-связи, но когда клиент больше подключается к серверу, RTPS-сообщения путают заказы, и мой сервер хочет преобразовать в целое число, где только строка номер сеанса из "одноадресной" записи и так далее ...

Вот что я делаю для работы с разными клиентами:

  ServerSocket socket = new ServerSocket(7777);
    while(true) {
        System.out.println("\nAspettando una connessione...");
        Socket incoming = socket.accept();
        Server server = new Server(incoming);
        Thread t = new Thread(server);
        t.start();
    }

Мой класс Server реализует Запуск для обработки таймера для воспроизведения, приостановки и остановки потоковой передачи.

Хорошо, он работает, обеспечивая потоковую передачу видео одному клиенту, но сервер сбивает RTSP с запросов TCP от замораживающихся клиентов. Если я закрою их и открою третий, он снова начнет работать, потому что сервер понимает, что получает.


Более конкретно, исключения на сервере зависят от сообщений, отправляемых RTSP-клиентами. Например

$ Сервер (должен получить Cseq) получает от (/192.168.0.4): Сеанс: 12345678

$ Сервер (должен получить Cseq) из (/127.0.0.1): Cseq: 4

Так что исключения могут быть:

Exception in thread "Thread-3" java.lang.NullPointerException
        at java.util.StringTokenizer.<init>(StringTokenizer.java:182)
        at java.util.StringTokenizer.<init>(StringTokenizer.java:219)
        at progetto2.Server.run(Server.java:91)
        at java.lang.Thread.run(Thread.java:619)

или

когда найден Транспорт: RTP / UDP; одноадресный; client_port = 8888 \ r \ n что-то вроде (я прошу прощения, я потерял исключение в строке потока)

    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Integer.parseInt(Integer.java:449)
    at java.lang.Integer.parseInt(Integer.java:499)
    at progetto2.Server.run(Server.java:108)
    at java.lang.Thread.run(Thread.java:619)

Итак, я должен обращаться с разными клиентами, должен ли я использовать разные порты TCP? Извините, но я помню, что для многоклиентного чата у меня не было этих проблем. Я надеюсь, что объяснил мою проблему в лучшем виде.

Спасибо всем за помощь и советы!

С уважением!

1 Ответ

1 голос
/ 27 октября 2010

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

...