当我到达必须向服务器发送套接字的位置时,我正在用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”时它不起作用吗?
答案 0 :(得分:0)
正如我的照片所指出的那样,数据结构正确,但是其中包含的数据却不正确。信息应以\ t \ t而不是\ n \ t \ t分隔。
当正确地将分隔符设置为解析输入的strtok()函数时,该问题已解决。