Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 323协议端点到端点发送和接收什么来发起呼叫?_Java_C_Sip_H.323 - Fatal编程技术网

Java 323协议端点到端点发送和接收什么来发起呼叫?

Java 323协议端点到端点发送和接收什么来发起呼叫?,java,c,sip,h.323,Java,C,Sip,H.323,在H.323中,端点到端点消息协议是如何工作的?我看到的大多数例子都涉及到关门省,但实际上我想用(C/java/Lua/php/d TCP/UDP)对端点H.323播放器做一个简单的端点。 我应该发送的原始消息协议是什么?例如,在SIP中,我发现这样的数据包被发送了(https://gist.github.com/1151125)在C++中有一个开源实现:(指向wikipedia,它还有一些指向OpenH323页面的链接)。在C++中有一个开源实现:(指向wikipedia,它有更多指向Open

在H.323中,端点到端点消息协议是如何工作的?我看到的大多数例子都涉及到关门省,但实际上我想用(C/java/Lua/php/d TCP/UDP)

对端点H.323播放器做一个简单的端点。
我应该发送的原始消息协议是什么?例如,在SIP中,我发现这样的数据包被发送了(https://gist.github.com/1151125)在C++中有一个开源实现:(指向wikipedia,它还有一些指向OpenH323页面的链接)。

在C++中有一个开源实现:(指向wikipedia,它有更多指向OpenH323页面的链接)。

H.323中使用了几层协议: RAS、Q.931、H.245,然后是RTP和RTCP

RAS消息通过UDP发送。在大多数情况下,它们是端点和其网守之间的通信:您使用RRQ向网守注册,您使用ARQ启动呼叫,等等。 一旦完成呼叫(ARQ)的准入部分,网守将发送一个ACF-准入确认-其中他说明您需要将Q.931设置消息发送到的位置

Q.931消息通常通过TCP发送。它们用于在端点之间建立呼叫。它们可以通过网守或任何其他中介设备路由,也可以直接在端点之间发送。 设置发送的初始Q.931消息,最后是Q.931 CONNECT消息

一旦建立了Q.931,H.245就会收到处理呼叫控制的信号(交换能力和打开逻辑通道)。这可以通过Q.931隧道或单独的TCP连接来完成。同样,您可能最终通过网守路由或直接在端点之间完成


RTP和RTCP是H.245协商的结束,是找到实际介质的地方。

H.323中使用了几层协议: RAS、Q.931、H.245,然后是RTP和RTCP

RAS消息通过UDP发送。在大多数情况下,它们是端点和其网守之间的通信:您使用RRQ向网守注册,您使用ARQ启动呼叫,等等。 一旦完成呼叫(ARQ)的准入部分,网守将发送一个ACF-准入确认-其中他说明您需要将Q.931设置消息发送到的位置

Q.931消息通常通过TCP发送。它们用于在端点之间建立呼叫。它们可以通过网守或任何其他中介设备路由,也可以直接在端点之间发送。 设置发送的初始Q.931消息,最后是Q.931 CONNECT消息

一旦建立了Q.931,H.245就会收到处理呼叫控制的信号(交换能力和打开逻辑通道)。这可以通过Q.931隧道或单独的TCP连接来完成。同样,您可能最终通过网守路由或直接在端点之间完成


RTP和RTCP是H.245协商的结束,是找到实际介质的地方。

以下是H323呼叫的wireshark捕获示例:

回应这些评论,SIP在常规编程语言中的实现复杂性不是一个公平的比较。SIP是纯文本,旨在简化和理解。您需要的库支持要点是字符串操作


相信我,在没有库的情况下自己实现H323与在没有字符串的语言中实现SIP不同,它就像在没有编译器的情况下实现SIP一样。

以下是H323调用的wireshark捕获示例:

回应这些评论,SIP在常规编程语言中的实现复杂性不是一个公平的比较。SIP是纯文本,旨在简化和理解。您需要的库支持要点是字符串操作


相信我,在没有库的情况下自己实现H323与在没有字符串的语言中实现SIP不同,它就像在没有编译器的情况下实现SIP一样。

SETUP当你说这意味着我们正在发送一个包含头和命令的8字节数据包时。CONNECT当你说连接时,这意味着我们正在发送第二个连接请求?但我是有一点让人困惑,这里提到的是单字节和多字节,例如:不是真的…SETUP和CONNECT是通过TCP发送的Q.931消息。根据消息本身的实际内容,每个消息都有任意数量的字节。另一个方面是,Q.931是一个ISDN协议。与H.323一起使用时,会添加一个用户信息具有真实ASN.1“内容”的信息元素在它里面。你可以在这里了解更多:。这是安装消息的ASN.1部分:当你说安装意味着我们正在发送一个包含头和命令的8字节的数据包时,安装。连接当你说连接时,它意味着我们正在发送第二个连接请求?但我对一件事感到困惑,这就是这里提到的单字节和多字节。例如:不是真的。。。SETUP和CONNECT是通过TCP发送的Q.931消息。根据消息本身的实际内容,每个消息都有任意数量的字节。另一个方面是,Q.931是一个ISDN协议。当与H.323一起使用时,有一个添加的用户信息元素包含真正的ASN.1“东西”在它里面。你可以在这里了解更多:。这是安装消息的ASN.1部分:感谢链接。但我只想在没有媒体的情况下发出信号。并避免对该堆栈使用更多依赖项。这样我也可以在Java或Php或跨平台中进行修补,而不会面临许多兼容性问题。@89899.3K:我会重新考虑该策略如果你不使用专门的库,编码和解码H.323消息是非常复杂的。即使你有一个ASN.1编译器,让它按编码(不是BER!)进行正确的编码可能比你想处理的要多。@Gene Vincent:我仍然相信关于packe的一切