标签: ipv6

如何在LWP中启用IPv6支持?

以下代码......

my $user_agent = LWP::UserAgent->new;
my $request = HTTP::Request->new(GET => $url);
my $response = $user_agent->request($request);
if ($response->is_success) {
    print "OK\n";
} else {
    die($response->status_line);
}
Run Code Online (Sandbox Code Playgroud)

..将失败..

500 Can't connect to <hostname> (Bad hostname '<hostname>')
Run Code Online (Sandbox Code Playgroud)

..如果$ url中的主机名是仅IPv6地址(即:存在AAAA记录,但没有A记录).

我的问题是:

  • 如何在LWP中启用IPv6支持?
  • 如何为"prefer-IPv4-over-IPv6"(Avs. AAAA)/"prefer-IPv6-over-IPv4"(AAAAvs. A)配置LWP的设置?

perl ipv6 lwp

10
推荐指数
1
解决办法
3905
查看次数

如何阅读IPv6地址的TENTATIVE标志?

我正在使用ioctl()系统调用prgramtically分配ipv6地址.我想知道是否有办法,我可以发现分配的ip是暂定/重复?

谢谢.

c linux ipv6

10
推荐指数
1
解决办法
2612
查看次数

使用Python流式传输音频和视频

我需要制作一个流式传输实时多媒体的应用程序.目前我的应用程序是从网络摄像头(使用OpenCV)拍摄图像帧并将其发送到客户端.它还使用pymedia模块发送音频.问题是到达客户端的图像和音频数据包都不同步.

所以我有以下问题:

  1. 用于实时多媒体流的python中是否有任何模块?
  2. 我可以以某种方式使音频和图像帧同步为客户端吗?

PS.pymedia自2006年以来一直没有开发,也没有工作.

python video streaming live ipv6

10
推荐指数
1
解决办法
2万
查看次数

不同的浏览器,不同的IP?

我通过保存$_SERVER['REMOTE_ADDR']MySQL数据库中的值来保存用户的IP地址.问题是Firefox和Chrome $_SERVER['REMOTE_ADDR']都是::1(这意味着IPv6中的 localhost ),IE和Opera是127.0.0.1(IPv4).

所以,我的问题是

  • IP版本是否依赖于浏览器?(我以前认为它取决于计算机)

  • 我应该在数据库中创建两个字段,一个用于IPv4地址,一个用于IPv6地址?

  • 我应该将所有IP统一到IPv6吗?我怎样才能在PHP中实现这一点(如果可能的话)?

php browser ip ipv4 ipv6

10
推荐指数
1
解决办法
830
查看次数

URL的fopen()中断域名,而不是数字地址

经过几个小时尝试调试遇到fopen()问题的第三方应用程序后,我终于发现了这一点

php -r 'echo(file_get_contents("http://www.google.com/robots.txt"));'
Run Code Online (Sandbox Code Playgroud)

失败了,但是

php -r 'echo(file_get_contents("http://173.194.32.81/robots.txt"));'
Run Code Online (Sandbox Code Playgroud)

成功.请注意,作为网络服务器用户,我可以ping www.google.com并且它解析得很好.

我把两个PHP的执行都绑定了,它们分歧如下:

对于数字v4 URL:

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
fcntl(3, F_GETFL)                       = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
connect(3, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("173.194
poll([{fd=3, events=POLLOUT}], 1, 0)    = 0 (Timeout)
...[bunch of poll/select/recvfrom]...
close(3)                                = 0
Run Code Online (Sandbox Code Playgroud)

对于域名:

socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 3
close(3)                                 = 0
Run Code Online (Sandbox Code Playgroud)

似乎PHP甚至没有尝试对该套接字做任何事情.或者甚至解决域名问题.WTF?

使用或不使用ipv6支持重新编译PHP似乎并不重要.不希望在此系统上禁用ipv6.

Gentoo Linux,PHP 5.3.14,目前试用PHP 5.4并看看它是否有帮助.有人有想法吗?

编辑:

php -r 'echo gethostbyname("www.google.com");'
Run Code Online (Sandbox Code Playgroud)

工作并产生一个ipv4,而

php -r 'echo(file_get_contents("http://[2a00:1450:4007:803::1011]/"));'
Run Code Online (Sandbox Code Playgroud)

似乎返回空白结果.

编辑2:

我第一次没注意到,当使用名称时打开的v6套接字是SOCK_DGRAM.这个PHP试图解析域名吗?我尝试在resolv.conf中将我的解析器从127.0.0.1切换到:: 1,但它没有帮助.

php linux ipv6

10
推荐指数
1
解决办法
1213
查看次数

协议不支持的地址族

以下代码是TCP客户端的套接字编程示例.

但是当我运行它时,connect()作为协议不支持的地址族返回.

我听说,如果平台不支持ipv6,就会发生这个问题.

但我写的AF_INET是ipv4.

我的服务器,即CentOS6.4,也是在inet6 addr中配置的.

有谁知道为什么?

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

int
main(){
    struct sockaddr_in server;
    int sock;
    char buf[32];
    int n;
    sock = socket(AF_INET,SOCK_STREAM,0);
    perror("socket");
    server.sin_family = AF_INET;
    server.sin_port = htons(12345);
    inet_pton(AF_INET,"127.0.0.1",&server,sizeof(server));
    connect(sock,(struct sockaddr *)&server,sizeof(server));
    perror("connect");
    memset(buf,0,sizeof(buf));
    n = read(sock,buf,sizeof(buf));
    perror("read");
    printf("%d,%s\n",n,buf);
    close(sock);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c sockets centos ipv6

10
推荐指数
1
解决办法
6万
查看次数

在boost :: asio中一起接受IPv4和IPv6

简短而简单的问题:我是新手boost::asio,我想知道是否有可能同时tcp::acceptor监听IPv4和IPv6连接.关于boost主页的教程显示如下:

_acceptor = new tcp::acceptor(_ioService, tcp::endpoint(tcp::v4(), 3456));
Run Code Online (Sandbox Code Playgroud)

始终使用特定协议指定端点.是否无法同时在同一端口上侦听IPv4和IPv6?

c++ ip-address ipv4 ipv6 boost-asio

10
推荐指数
1
解决办法
4363
查看次数

需要适用于iOS 9的IPv6多播C代码

Apple现在要求iOS 9应用程序符合IPv6标准.除了一些发送UDP广播的代码之外,我们大多都没问题 - 现在这在iOS 9中失败了.

我读到的所有内容都告诉我,UDP组播是在IPv6中实现这一目标的正确方法.我找到了一些示例代码,但它不适用于我试过的任何版本的iOS或Mac OS X.

这个代码是从我们程序中的C/C++ lib调用的 - 很难回调到Swift,Obj-C,Java等.这个代码将由我们的应用程序的Mac OS X和Android版本共享.有人会认为在任何POSIX环境中都可以在C中进行IPv6组播!

在下面的示例中,执行成功直到最后的sendto()调用,该调用实际上发送UDP消息.sendto()失败,失败后errno设置为EBROKENPIPE(22).

我最好的猜测是我错过了一些必需的setsockopt()调用,或者使用了错误的多播地址.现在,我很难过.

这是我正在进行的函数调用(在UDP端口4031上组播"是否有任何人?"):

char *msg = "Is anybody out there?";
err = multicast_udp_msg ( "FF01::1111", 4031, msg, strlen(msg) );
Run Code Online (Sandbox Code Playgroud)

这是被调用的代码:

// Multicasts a message on a specific UDP port.
// myhost - IPv6 address on which to multicast the message (i.e., ourself)
// port - UDP port on which to broadcast the mssage
// msg - message contents to broadcast
// msgsize - length of message …
Run Code Online (Sandbox Code Playgroud)

c multicast ipv6 ios9

10
推荐指数
1
解决办法
1569
查看次数

如何使用.fetch函数使API调用IPV6兼容react-native?

我开发了一个应用程序(用于IOS),用反应本机编写,在IPV4网络中运行良好.然而,最近Apple发送了一条消息,说我的应用程序在IPV6网络中测试时无效.他们告诉我,我必须使它与仅支持IPV6的网络兼容.

问题是,如何使我现有的API调用与IPV6网络兼容?

我的API使用https协议,它由域名调用,而不是原始IP.

我使用的示例获取调用是:

fetch(query,{
      method: 'post',
      headers: Utils.fetchHeaders('post')
      })
      .then(Utils.checkStatus)
      .then(Utils.parseJSON)
      .then(json => this._handleResponse(json))
      .catch(error => {

         this.setState({
          votingError: 'Sorry, there was an error!',
          loading: false
       });

      });
Run Code Online (Sandbox Code Playgroud)

API端点采用以下格式:

https://www.myapidomain.com

任何帮助赞赏.

ipv6 fetch ios react-native

10
推荐指数
1
解决办法
3105
查看次数

Node.js dns.resolve()vs dns.lookup()

我需要在Node.js中查找给定主机到其对应的IP.似乎有两种本地方法:

> dns.resolve('google.com', (error, addresses) => { console.error(error); console.log(addresses); });
QueryReqWrap {
  bindingName: 'queryA',
  callback: { [Function: asyncCallback] immediately: true },
  hostname: 'google.com',
  oncomplete: [Function: onresolve],
  domain:
   Domain {
     domain: null,
     _events: { error: [Function] },
     _eventsCount: 1,
     _maxListeners: undefined,
     members: [] } }
> null
[ '216.58.194.174' ]
Run Code Online (Sandbox Code Playgroud)

和:

> dns.lookup('google.com', (error, address, family) => { console.error(error); console.log(address); console.log(family); });
GetAddrInfoReqWrap {
  callback: { [Function: asyncCallback] immediately: true },
  family: 0,
  hostname: 'google.com',
  oncomplete: [Function: onlookup],
  domain:
   Domain { …
Run Code Online (Sandbox Code Playgroud)

javascript dns ipv4 ipv6 node.js

10
推荐指数
1
解决办法
1万
查看次数

标签 统计

ipv6 ×10

c ×3

ipv4 ×3

linux ×2

php ×2

boost-asio ×1

browser ×1

c++ ×1

centos ×1

dns ×1

fetch ×1

ios ×1

ios9 ×1

ip ×1

ip-address ×1

javascript ×1

live ×1

lwp ×1

multicast ×1

node.js ×1

perl ×1

python ×1

react-native ×1

sockets ×1

streaming ×1

video ×1