gpt4 book ai didi

c - 不支持获取 ai_socktype

转载 作者:行者123 更新时间:2023-11-30 16:03:59 26 4
gpt4 key购买 nike

我以前有过这个工作,但我不明白如何工作,所以我尝试重写一些代码。

一切似乎都很顺利,除了当我尝试使用 getaddrinfo() 时,我得到的结果是 -7,这意味着错误“ai_socktype 不支持”。

我敢打赌,这只是我仍在掌握指针。如果有人可以解释我如何/哪里出错了,我将不胜感激。

代码:

#define PORT "4400"
typedef struct {
int port;
fd_set *connections;
int connections_count;
int listener;
struct addrinfo *address;
struct addrinfo *socket_hints;
} Server;

void initialize_server(Server *passed_server, char *port) {
struct addrinfo *temp;
int status; // Get addrinfo status

// Set up the server hints
passed_server->socket_hints = malloc(sizeof passed_server->socket_hints);
passed_server->socket_hints->ai_family = AF_UNSPEC;
passed_server->socket_hints->ai_socktype = SOCK_STREAM;
passed_server->socket_hints->ai_flags = AI_PASSIVE;

if((status = getaddrinfo(NULL, port, passed_server->socket_hints, &temp)) != 0) {
fprintf(stderr, "Error with getaddrinfo: %s\n", gai_strerror(status));
}
printf("Result: %d\n", status);
}

int main(int argc, char** argv) {
// Set up socket stuff
Server *server = malloc(sizeof *server); // Set up the server
initialize_server(server, PORT);

return (EXIT_SUCCESS);
}

最佳答案

回顾代码后,我意识到我需要更改:

passed_server->socket_hints = malloc(sizeof passed_server->socket_hints);

passed_server->socket_hints = malloc(sizeof *passed_server->socket_hints);

我相信这是因为在第一个中我得到了内存位置的大小(int 类型)。在第二个中,我返回 socket_hints 指向的结构的大小。

关于c - 不支持获取 ai_socktype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3596732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com