标签: gethostbyname

gethostbyname函数中的IP地址顺序

由于我之前的问题没有答案,因此我将其重述。

使用PC名称(NetBIOS名称)执行gethostbyname()时,使用什么顺序的IP地址(如果将IP地址绑定到一个接口)?

我有以下代码:

#include <iostream>
#include <winsock.h>
#pragma comment(lib, "Ws2_32.lib")

int main()
{
    char hostname[255];
    struct hostent *he;
    struct in_addr **addr_list;

    WSAData data;
    WSAStartup(MAKEWORD(2, 2), &data);

    gethostname(hostname, 255);
    std::cout << "Host name: " << hostname << std::endl;

    if ((he = gethostbyname(hostname)) == NULL) {
        std::cout << "gethostbyname error" << std::endl;
    } else {
        std::cout << "IP addresses: "  << std::endl;
        addr_list = (struct in_addr **)he->h_addr_list;
        for(int i = 0; addr_list[i] != NULL; i++) {
            std::cout << inet_ntoa(*addr_list[i]) << std::endl;
        } …
Run Code Online (Sandbox Code Playgroud)

c++ ip winsock gethostbyname windows-server

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

使用 getaddrinfo 连接套接字超时

我花了几个小时试图找出我的问题,只是在我写问题的时候找到了解决方案(当你需要正式化你的问题并解释它时,它总是有帮助的)。我发布它,希望它可以帮助某人。

使用 getaddrinfo,如果我尝试将套接字连接到我的服务器,执行(我认为是)在大量网站以及 getaddrinfo 的手册页示例代码中解释的内容,它会因“连接超时”而失败错误信息:(简化代码更简洁)

void connect_UsingGetAddrInfo_Wrong (std::string host, unsigned short int port, int& socketfd)
{
    //simplified loops & error handling for concision
    int x;

    int domain = AF_INET;         // IP_v4
    int socketType = SOCK_STREAM; // Sequenced, reliable, connection-based byte streams.  

    addrinfo hints, *addr;
    //fine-tune hints according to which socket you want to open
    hints.ai_family = domain; 
    hints.ai_socktype = socketType; 
    hints.ai_protocol = 0;           // no enum : possible value can be read in /etc/protocols
    hints.ai_flags = AI_CANONNAME | AI_ALL | …
Run Code Online (Sandbox Code Playgroud)

c sockets gethostbyname getaddrinfo

4
推荐指数
1
解决办法
1858
查看次数

C 中 inet_aton() 和 gethostbyname() 之间的区别?

我正在学习C 和TCP/UDP。正如标题... C 中的 inet_aton() 和 gethostbyname() 有什么区别吗?据我所知,两者都将 IP 地址从字符串转换为数字。

c gethostbyname inet inet-aton

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

gethostbyname() 进程即使在不同的线程中也能一致地解析吗?

我通过不同线程的 gethostbyname() 进行了 DNS 解析实验。我关闭了网络链接并运行了下面的程序。输出是这样的

gethostbyname 开始于 1411234734
gethostbyname 开始于 1411234734
gethostbyname 开始于 1411234734
gethostbyname 完成于 1411234774
gethostbyname 完成于 1411234814
gethostbyname 完成于 1411234854

gethostbyname() 同时开始,但在 40 秒超时后一一完成。

然后我尝试了 getaddrinfo()。看起来这个函数没有遇到这个问题

getaddrinfo 开始于 1411235759
getaddrinfo 开始于 1411235759
getaddrinfo 开始于 1411235759
getaddrinfo 完成于 1411235799
getaddrinfo 完成于 1411235799
getaddrinfo 完成于 1411235799

那么,为什么我得到这个结果,这种行为是否仅针对 Linux?

#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <time.h>
#include <pthread.h>

void *resolve_ghbn(void *host) {
    printf("gethostbyname started at %d\n", time(NULL));
    struct hostent *rslv = gethostbyname((char*)host);
    printf("gethostbyname finished at %d\n", time(NULL)); …
Run Code Online (Sandbox Code Playgroud)

c linux multithreading gethostbyname

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

DNS查找:从DNS /主机名获取IP地址

我需要通过域名获取域的IP地址.

  1. 网站:hotmail.com/65.55.72.151
  2. 网站:domain.com/65.254.244.180

可以这样做,在那种情况下,我该怎么做?

php dns gethostbyname

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