资源在gethostbyname()中暂时不可用

时间:2019-02-27 17:50:36

标签: c sockets

当我到达必须向服务器发送套接字的位置时,我正在用C编写我的第一个客户端。当我尝试获取其地址时,我会得到

  

资源暂时不可用

,我找不到导致此问题的原因。

dadesSoftConfig-> ipServer在本地主机内部

    struct hostent *ent;

    ent = gethostbyname(dadesSoftConfig->ipServidor);
    if (ent == NULL) {
        int errnum = errno;
        fprintf(stderr, "Client finalitzat: %s\n", strerror(errnum));
        exit(EXIT_FAILURE);
    }

我不发送任何套接字,而是等待任何数据,这是在开始时发生的,甚至是在协议的注册阶段之前。

根据要求,这是dadesSoftConfig的打印件:

DEBUG_INFO:     Nom: SW-01
                Mac: 89F107457A36
                Server: localhost
                Server-port: 2019

这就是我的打印方式:

void print_software_configuration(TDadesSoftConfig *dades) {
    char *msg;
    msg = (char *) malloc(sizeof(char) * 75);
    if (sprintf(msg, "\tNom: %s \t\tMac: %s \t\tServer: %s \t\tServer-port: %d\n", 
                dades->nom, dades->mac, dades->ipServidor, dades->serverPort) < 0) {
        fprintf(stderr, "No s'ha pogut mostrar el contingut llegit\n");
    } else {
        print_debug_info(msg);
    }
    free(msg);
}

我尝试向gethostbyname()函数发送“ 127.0.0.1”,并且即使将其存储到结构中,代码也可以正常工作。知道为什么发送“ localhost”时它不起作用吗?

1 个答案:

答案 0 :(得分:0)

正如我的照片所指出的那样,数据结构正确,但是其中包含的数据却不正确。信息应以\ t \ t而不是\ n \ t \ t分隔。

当正确地将分隔符设置为解析输入的strtok()函数时,该问题已解决。