vcap无法打开[udp @ 0x56378e8a76a0]绑定失败:权限被拒绝

时间:2019-03-27 18:26:39

标签: opencv udp ipv6

我正在尝试使用带有IPV6地址的opencv中的VideoCapture函数将其从树莓派流到我的debian虚拟机,但尝试时出现标题错误。

我已确认netcat和mplayer可通过以下方式访问ipv6地址:

Debian主机:

netcat -l -6 -u 2222

树莓派:

/ opt / vc / bin / raspivid -t 0 -w 300 -h 300 -hf -fps 20 -o-| nc -u(ipv6地址)2222

代码:

ManagerId

编辑:我已经确认vcap.open可以和127.0.0.1一起使用,但是问题是它仍然不能与我的ipv6地址一起使用

1 个答案:

答案 0 :(得分:1)

以您指定的格式<protocol>://使用的IPv6地址必须放在方括号([])中。最初是在 RFC 2732, Format for Literal IPv6 Addresses in URL's 中指定的,并在 RFC 3896:, Uniform Resource Identifier (URI): Generic Syntax 中继续:

  

3.2.2。主持人

     

授权的主机子组件由IP文字标识   封装在方括号内的IPv4地址,   十进制形式或注册名称。主机子组件是大小写-   不敏感。 URI中是否存在主机子组件   表示该方案要求访问该主机上的给定主机   互联网。在许多情况下,主机语法仅用于以下目的:   重用为以下对象创建和部署的现有注册过程   DNS,从而获得全球唯一的名称,而无需花费   部署另一个注册表。但是,这种用法有其自己的   费用:域名所有权可能会因以下原因而随时间变化   URI生产者期望的。在其他情况下,   主机组件标识无关的注册名称   与互联网主机。我们将名称“主机”用于ABNF规则   因为那是它最常见的目的,而不是唯一的目的。

  host        = IP-literal / IPv4address / reg-name
     

主机的语法规则不明确,因为它并不完全   区分IPv4地址和注册表名称。为了   消除语法歧义后,我们应用“首次匹配获胜”算法:   主机匹配IPv4address的规则,则应将其视为   IPv4地址文字,而不是注册表名称。虽然主持人是   不区分大小写,生产者和规范化者应将小写字母用于   为了统一起见,注册名称和十六进制地址   而只将大写字母用于百分比编码。

     

由Internet协议文字地址(版本6)标识的主机   [RFC3513]或更高版本,通过封装IP文字加以区分   在方括号(“ [”和“]”)中。这是唯一的地方   URI语法中允许使用方括号字符。在   期待将来尚未定义的IP文字地址格式,   一个实现可以使用可选的版本标志来指示这样的   显式格式化而不是依靠启发式确定。

  IP-literal = "[" ( IPv6address / IPvFuture  ) "]"

  IPvFuture  = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )
     

版本标志不表示IP版本;相反,它   指示文字格式的未来版本。因此,   实现不能为现有的版本提供版本标志   IPv4和IPv6文字地址格式如下所述。如果是URI   包含以“ v”(不区分大小写)开头的IP文字,   指示存在版本标志,由   不知道该版本标志含义的应用程序,则   应用程序应为“地址”返回适当的错误   机制不受支持”。

     

由IPv6文字地址标识的主机在   没有先前版本标记的方括号。提供的ABNF   这是IPv6文字的文本定义的翻译   [RFC3513]中提供的地址。此语法不支持IPv6   范围内的寻址区标识符。

     

128位的IPv6地址被分为八个16位。每片   用不区分大小写的十六进制数字表示,使用一个   到四个十六进制数字(允许前导零)。八   编码后的部分以最高有效位开头,以冒号分隔   字符。可选地,最不重要的两个部分可以代替   以IPv4地址文本格式表示。一个或一个的序列   地址中更多连续的零值16位块可能是   删除,省略所有数字,并让两个连续正好保留   冒号来标记省略号。

  IPv6address =                            6( h16 ":" ) ls32
              /                       "::" 5( h16 ":" ) ls32
              / [               h16 ] "::" 4( h16 ":" ) ls32
              / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32
              / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32
              / [ *3( h16 ":" ) h16 ] "::"    h16 ":"   ls32
              / [ *4( h16 ":" ) h16 ] "::"              ls32
              / [ *5( h16 ":" ) h16 ] "::"              h16
              / [ *6( h16 ":" ) h16 ] "::"

  ls32        = ( h16 ":" h16 ) / IPv4address
              ; least-significant 32 bits of address

  h16         = 1*4HEXDIG
              ; 16 bits of address represented in hexadecimal
     

由IPv4文字地址标识的主机表示为   点分十进制表示法(   如[RFC1123]中所述,范围为0到255,以“。”分隔。   参考[RFC0952]。请注意,其他形式的点分符号可能   可以在某些平台上进行解释,如第7.4节所述,但   此仅允许四个八位字节的点分十进制形式   语法。

  IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet

  dec-octet   = DIGIT                 ; 0-9
              / %x31-39 DIGIT         ; 10-99
              / "1" 2DIGIT            ; 100-199
              / "2" %x30-34 DIGIT     ; 200-249
              / "25" %x30-35          ; 250-255
     

以注册名称标识的主机是一个字符序列   通常用于在本地定义的主机或服务中查找   名称注册表,尽管URI的特定于方案的语义可能需要   而是使用特定的注册表(或固定名称表)。的   最常见的名称注册机制是域名系统(DNS)。一种   用于在DNS中查找的注册名称使用定义的语法   在[RFC1034]的3.5节和[RFC1123]的2.1节中。这样的名字   由一系列以“。”分隔的域标签组成,每个域   标签以字母数字字符开头和结尾,可能   还包含“-”字符。完整域名的最右边域名   DNS中的限定域名后可以跟一个“。”。和   如果有必要区分完整   域名和一些本地域。

  reg-name    = *( unreserved / pct-encoded / sub-delims )
     

如果URI方案为主机定义了默认值,则该默认值   当主机子组件未定义或已注册时适用   名称为空(长度为零)。例如,“文件” URI方案是   定义为没有权限,空主机和“ localhost”均表示   最终用户的计算机,而“ http”方案认为缺少   权限或空主机无效。

     

此规范不要求特定的注册名称   查找技术,因此不限制reg-的语法   除了互操作性所必需的名称。相反,它   将注册名称语法一致性问题委托给   每个执行URI解析的应用程序的操作系统,以及   该操作系统决定出于以下目的允许的操作   主机标识。 URI解析实现可能使用DNS,   主机表,黄页,NetInfo,WINS或其他任何系统   查找注册名称。但是,全球范围的命名系统   例如URI所必需的DNS全限定域名   旨在具有全球范围。 URI生产者应使用以下名称   符合DNS语法,即使不是立即使用DNS   很明显,并且应将这些名称限制为不超过255个字符   长度。

     

reg-name语法允许使用百分比编码的八位字节,以便   以统一的方式表示非ASCII注册名称,即   独立于基础名称解析技术。非ASCII   必须首先根据UTF-8 [STD63]对字符进行编码,然后   对应的UTF-8序列的每个八位位组必须为百分比-   编码为URI字符。 URI产生   除非使用,否则应用程序不得在主机中使用百分比编码   代表UTF-8字符序列。当非ASCII注册时   名称代表旨在用于的国际化域名   通过DNS解析,名称必须转换为IDNA   在名称查找之前进行编码[RFC3490]。 URI生产者应提供   这些注册名称采用IDNA编码,而不是   百分比编码,如果他们希望最大程度地与   旧版URI解析器。