getaddrinfo

MongoDB on Vagrant via Port Forwarding issue

风格不统一 提交于 2019-12-11 23:22:31
问题 I've recently installed mongodb on my CentOS 6 VM running on Vagrant. I added port forwarding to Vagrantfile to forward the mongo port config.vm.forward_port 27017, 127017 I configured mongod to start automatically when the server starts and have confirmed that the service starts as intended. however when i run mongo localhost:127017 from my host machine (not vagrant) i get the following error MongoDB shell version: 1.8.2 connecting to: localhost:127017/test Fri Jan 20 13:58:28 getaddrinfo(

socket.getaddrinfo() block forever when using with gevent

亡梦爱人 提交于 2019-12-11 09:18:29
问题 Using httplib2 , I am sending multiple requests with gevent , after some time http.request() method of httplib2 is getting blocked forever. On checking I found that blocking function is socket.getaddrinfo() in httplib2 link. 回答1: set default timeout using socket.setdefaulttimeout() . since timeout of getaddrinfo is not specified it will use default timeout. 来源: https://stackoverflow.com/questions/24883247/socket-getaddrinfo-block-forever-when-using-with-gevent

C Socket Error: “Name or service not known”

这一生的挚爱 提交于 2019-12-06 07:36:17
I'm trying to code a program in C that uses sockets to fetch webpages. My code currently prints successfully the HTML code at some webpages, but not all webpages. In the instances where it does not work I get the following error: Name or service not known Can someone please offer me a solution? The error occurs when executing getaddrinfo. I can't seem to figure it out after an extensive search for the answer. Thanks everyone! My code is as follows: #include <errno.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <err.h> #include <sys/types.h> #include

getaddrinfo memory leak

こ雲淡風輕ζ 提交于 2019-12-05 11:27:46
问题 I have this code for getting information about IPv4 address: struct addrinfo hints, *info = NULL; char addr4[INET_ADDRSTRLEN]; memset(&hints, 0, sizeof(hints)); hints.ai_socktype = SOCK_STREAM; hints.ai_family = AF_INET; if (!getaddrinfo(argv[hostPara], NULL, &hints, &info)) { inet_ntop(AF_INET, &((const sockaddr_in *)info->ai_addr)->sin_addr, addr4, INET_ADDRSTRLEN); } if (info != NULL) { freeaddrinfo(info); } but if I tested argv[hostPara] is "www.google.com" I am getting this from valgrind

getaddrinfo函数返回No such file or directory的分析

岁酱吖の 提交于 2019-12-05 07:09:18
在项目中实现NTP功能模块时,为了更好的兼容和更小的警告,将gethostbyname函数用getaddrinfo函数进行了替代,可是在开发板上运行时却遇到了这个错误: getaddrinfo fail for host time.windows.com:System error error:No such file or directory 然而同样的代码程序在PC上运行是正确的。可以确定是开发板上的文件系统环境缺少某个与网络相关的配置文件导致getaddrinfo系统调用执行失败,问题在于是哪一个文件,怎么来找到它?答案是使用strace工具在追踪getaddrinfo在PC上执行是的文件访问记录,从而找出缺少的配置文件。 为了减少干扰,使用一个简单的test程序来进行分析,使用如下命令得到追踪记录: # strace -e trace=file -o 2.strace ./test_getaddrinfo 追踪记录文件信息如下(为了保持strace文件的语法高亮,这里使用图片): 滤掉程序执行涉及的动态库链接缓存之类的文件(因为程序运行起来了),就只剩下三个文件了:/etc/host.conf /etc/hosts /etc/resolv.conf. /etc/resolv.conf文件是域名解析服务器列表的参数文件,实现域名解析,必须设置域名服务器的地址,开发板上已经配置了

getaddrinfo函数详解

99封情书 提交于 2019-12-05 07:09:08
有这样一个C/S程序,server提供一个叫做ruptime的服务,功能是当有客户端连接时调用uptime程序,并将结果发送到client。可是现在的问题是,这个服务系统本来是没有的,所以调用getaddrinfo的时候会返回如下错误: 代码: Servname not supported for ai_socktype 我觉得可能是需要编辑/etc/service文件把自己这个服务加进去,可是我加了之后没管用(设的端口是4000),开机的时候提示启动服务失败,所以我的问题就是如何开启我这个服务器程序提供的服务 个人认为,这个问题就是对getaddrinfo函数的应用和理解,下面帖子的内容基本上是对Advanced Programming in linux Environment这本书里的16-6等几个程序的解释,刚开始对getaddrinfo这 个函数和编辑/etc/service等不了解,所会有以上的问题存在。下面是资料。 bumpy:~/tmp$ gcc a.c bumpy:~/tmp$ ./a.out <==== 没有改/etc/services 前 getaddrinfo error: Servname not supported for ai_socktype bumpy:~/tmp$ vi a.c bumpy:~/tmp$ sudo vi /etc/services

Unix套接字接口

本小妞迷上赌 提交于 2019-12-05 04:47:00
简介 套接字是操作系统中用于网络通信的重要结构,它是建立在网络体系结构的传输层,用于主机之间数据的发送和接收,像web中使用的http协议便是建立在socket之上的。这一节主要讨论网络套接字。 套接字接口时一组函数,它们和Unix I/O结合起来,用于创建网络应用。许多操作系统都实现了自己的套接字接口。在Unix中,可以将套接字视为一个文件,使用文件I/O函数对套接字进行操作,这也贯彻了Unix中一切皆文件的思想。 既然是网络通信,那么就需要服务端和客户端,一个基本的客户端和服务端的通信模型如下,其中方框里为使用的函数接口: 由于套接字本质上也是一个文件,所以上图中的 recv 和 send 也可以使用文件I/O函数 read 和 write 替代。 套接字地址结构 既然要进行网络通信,那么就要有基本的网络的地址。因特网的套接字地址存放在一个叫 sockaddr_in 的16字节的结构体中,其中的IP地址和端口号都是以网络字节序(大端序)存放的: struct sockaddr_in { uint16_t sin_family; /* 协议类型,总是AF_INET */ uint16_t sin_port; /* 端口号 */ struct in_addr sin_addr; /* IP地址 */ unsigned char sin_zero[8]; /* sizeof

getaddrinfo函数 详解

巧了我就是萌 提交于 2019-12-04 07:04:29
gethostbyname和gethostbyaddr这两个函数仅仅支持IPv4,getaddrinfo函数能够处理名字到地址以及服务到端口这两 种转换,返回的是一个sockaddr结构的链表而不是一个地址清单。这些sockaddr结构随后可由套接口函数直接使用。如此以 来,getaddrinfo函数把协议相关性安全隐藏在这个库函数内部。应用程序只要处理由getaddrinfo函数填写的套接口地址结构。该函数在 POSIX规范中定义了。 int getaddrinfo( const char *hostname, const char *service, const struct addrinfo *hints, struct addrinfo **result ); 返回0: 成功 返回非0: 出错 其中: hostname:一个主机名或者地址串(IPv4的点分十进制串或者IPv6的16进制串) service:一个服务名或者10进制端口号数串。 hints: 可以是一个空指针,也可以是一个指向某个addrinfo结构的指针,调用者在这个结构中填入关于期望返回的信息类型的暗示。举例来说:如果指定的服务既 支持TCP也支持UDP,那么调用者可以把hints结构中的 ai_socktype成员设置成SOCK_DGRAM使得返回的仅仅是适用于数据报套接口 的信息。

Is it necessary to attempt to connect to all addresses returned by getaddrinfo()?

跟風遠走 提交于 2019-12-03 12:01:05
Beej's Simple Client example code iterates over all IP addresses returned from getaddrinfo(), until it can connect to the first one. See the code below. Is this always necessary, or is it OK to assume that we only have to try to connect to the first address returned by getaddrinfo()? memset(&hints, 0, sizeof hints); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; if ((rv = getaddrinfo(argv[1], PORT, &hints, &servinfo)) != 0) { fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv)); return 1; } // ------------------------------------------------------------ // loop through all the

(python) [Errno 11001] getaddrinfo failed

匿名 (未验证) 提交于 2019-12-03 02:33:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Can someone help me on how I can catch this error? import pygeoip gi = pygeoip.GeoIP('GeoIP.dat') print gi.country_code_by_name('specificdownload.com') Traceback (most recent call last): File "<module1>", line 14, in <module> File "build\bdist.win-amd64\egg\pygeoip\__init__.py", line 447, in country_code_by_name addr = self._gethostbyname(hostname) File "build\bdist.win-amd64\egg\pygeoip\__init__.py", line 392, in _gethostbyname return socket.gethostbyname(hostname) gaierror: [Errno 11001] getaddrinfo failed 回答1: Well, let’s ask Python what