Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
Linux/RHEL5:IPv6上的UDP不能在同一台pc上工作_Linux_Sockets_Udp_Ipv6 - Fatal编程技术网

Linux/RHEL5:IPv6上的UDP不能在同一台pc上工作

Linux/RHEL5:IPv6上的UDP不能在同一台pc上工作,linux,sockets,udp,ipv6,Linux,Sockets,Udp,Ipv6,我尝试在同一台pc上设置具有UDP和IPv6的netcat服务器/客户端 以下是我电脑上的界面: [root@rh55hp360g7ss7 trunk_dir]# ifconfig eth0 Link encap:Ethernet HWaddr xxx inet addr:192.168.255.166 Bcast:192.168.255.255 Mask:255.255.255.0 inet6 addr: fe80::1ec1:deff:

我尝试在同一台pc上设置具有UDP和IPv6的netcat服务器/客户端

以下是我电脑上的界面:

[root@rh55hp360g7ss7 trunk_dir]# ifconfig
eth0      Link encap:Ethernet  HWaddr xxx
          inet addr:192.168.255.166  Bcast:192.168.255.255  Mask:255.255.255.0
          inet6 addr: fe80::1ec1:deff:fef3:4870/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21948499 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24300265 errors:0 dropped:0 overruns:0 carrier:0
          collisions:360733 txqueuelen:1000
          RX bytes:3645218404 (3.3 GiB)  TX bytes:1672728274 (1.5 GiB)
          Interrupt:162 Memory:f4000000-f4012800
然后启动netcat服务器:

nc -6ul fe80::1ec1:deff:fef3:4870%eth0 5678
和netcat客户端(仍在同一台pc上)

但是,当我在NetCat客户机中键入内容时,没有任何内容传输到服务器

同样的例子也适用于以下情况:

  • 我在另一台pc上启动netcat客户端
  • 我正在使用TCP而不是UDP(即,当我删除-u选项时)
  • 当我使用IPv4而不是IPv6时(即,当我删除-6选项并且使用IPv4地址时)
有什么想法吗

特索尔

以下是路由表,以防有帮助:

[root@rh55hp360g7ss7 trunk_dir]# route -A inet6
Kernel IPv6 routing table
Destination                                 Next Hop                                Flags Metric Ref    Use Iface
fe80::/64                                   *                                       U     256    0        0 eth0
::1/128                                     *                                       U     0      265       5 lo
fe80::1ec1:deff:fef3:4870/128               *                                       U     0      10551       1 lo
ff00::/8                                    *                                       U     256    0        0 eth0
[root@rh55hp360g7ss7 trunk_dir]#
##新增日期:2012-03-13

  • 对于::1,它正在工作
  • 我在尝试在pc上运行SIP堆栈时也遇到同样的问题

这只是红帽和链接本地范围的问题。当使用具有全局作用域的地址时,它将起作用

我试用了Ubuntu 10.4,在这里它也在使用link-local-address

这是我的红帽发行版: [root@BETESIP02sipp]#uname-a
Linux BETESIP02.6.18-194.el5PAE#1 SMP周二3月16日22:00:21 EDT 2010 i686 i686 i386 GNU/Linux

这只是红帽和链接本地范围的问题。当使用具有全局作用域的地址时,它将起作用

我试用了Ubuntu 10.4,在这里它也在使用link-local-address

这是我的红帽发行版: [root@BETESIP02sipp]#uname-a
Linux BETESIP02.6.18-194.el5PAE#1 SMP周二3月16日22:00:21美国东部夏令时2010 i686 i686 i386 GNU/Linux

本地主机(
::1
)工作吗?我将尝试不使用链接本地地址进行任何操作。绑定地址不应包括区域说明符(%eth0)。还建议使用socat和ip路由代替(而不是netcat,route),因为它们具有更大的灵活性。我没有发现任何错误。可能是一个bug…With::1,它正在工作。如果我省略了区域说明符,则bind()不工作(它似乎填充了sockaddr\u in 6::sin6\u scope\u id字段)。localhost(
::1
)工作吗?我将尝试不使用链接本地地址进行任何操作。绑定地址不应包括区域说明符(%eth0)。还建议使用socat和ip路由代替(而不是netcat,route),因为它们具有更大的灵活性。我没有发现任何错误。可能是一个bug…对于::1,它正在工作。如果我省略了区域说明符,那么bind()将不工作(它似乎填充了sockaddr_in6::sin6_scope_id字段)。
[root@rh55hp360g7ss7 trunk_dir]# route -A inet6
Kernel IPv6 routing table
Destination                                 Next Hop                                Flags Metric Ref    Use Iface
fe80::/64                                   *                                       U     256    0        0 eth0
::1/128                                     *                                       U     0      265       5 lo
fe80::1ec1:deff:fef3:4870/128               *                                       U     0      10551       1 lo
ff00::/8                                    *                                       U     256    0        0 eth0
[root@rh55hp360g7ss7 trunk_dir]#