Я хотел бы получить несколько советов, потому что у меня конфликт между клиентами, отправляющими RTSP-сообщения на сервер.
Прежде всего, я прошу прощения у всех вас за мой английский.
Хорошо, я делаю потоковое видео Java приложение.
клиенты набор TCP
соединение с сервером для обмена RTSP
сообщениями
сервер отправляет UDP
клиенту , запрашивающему кадры в RTP
пакетах с использованием типа полезной нагрузки JPEG, поскольку мое видео в формате MotionJPEG.
Чтобы быть более конкретным:
- Сервер использует потоки для обработки TCP-подключения клиентов к тому же порту
- Каждый подключенный клиент отправляется на сервер, который порт хочет использовать для передачи 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?
Извините, но я помню, что для многоклиентного чата у меня не было этих проблем.
Я надеюсь, что объяснил мою проблему в лучшем виде.
Спасибо всем за помощь и советы!
С уважением!