gpt4 book ai didi

java - 如何解决服务器在 TCP 通信上收到的 RTSP 消息的冲突?

转载 作者:行者123 更新时间:2023-12-01 16:00:38 24 4
gpt4 key购买 nike

我想得到一些建议,因为我在向服务器发送 RTSP 消息的客户端之间存在冲突。首先,我为我的英语向大家道歉。

嗯,我正在做的是一个java流视频应用程序。

  • 客户端设置与服务器TCP连接以交换RTSP消息

  • 服务器使用 JPEG 有效负载类型通过 UDP 向请求的客户端发送 RTP 数据包中的帧,因为我的视频采用 MotionJPEG 格式。

更具体地说:

  1. 服务器使用线程处理同一端口上的客户端 TCP 连接
  2. 每个连接的客户端都会向服务器发送该端口想要用于 UDP 传输的信息。

问题是服务器在 tcp 通信上接收并分析 RTSP 消息,但是当客户端更多地连接到服务器时,RTPS 消息会混淆命令,而我的服务器想要转换为整数,其中只是字符串,从写入的“单播”中获取 session 号等等...

这就是我处理不同客户的方法:

  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();
}

我的类服务器实现可运行以处理计时器来播放、暂停和停止流。

它可以向一个客户端提供视频流,但服务器会混淆来自卡住客户端的 TCP 请求上的 RTSP。如果我关闭它们并打开第三个,它就会再次开始工作,因为服务器了解正在接收的内容。

<小时/>

更具体地说,服务器中的异常取决于客户端发送的 RTSP 消息。例如

$Server(应接收 Cseq)从 (/192.168.0.4) 接收: session :12345678

$Server(应从 (/127.0.0.1) 接收 Cseq):Cseq:4

所以异常(exception)可能是:

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 端口吗?抱歉,但我记得对于多客户端聊天我没有遇到这些问题。我希望以最好的方式解释我的问题。

感谢大家对我的帮助和建议!

亲切的问候!

最佳答案

你描述的情况是不可能的。 TCP 不会重新排序消息,也不会合并来自不同客户端的消息。您的代码中有错误。也许某些东西是静态的,应该是服务器类中的实例变量。

关于java - 如何解决服务器在 TCP 通信上收到的 RTSP 消息的冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4032582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com