gpt4 book ai didi

c - 取消引用 TCP 客户端中不完整类型的指针? (C)

转载 作者:可可西里 更新时间:2023-11-01 02:56:50 25 4
gpt4 key购买 nike

我正在尝试用 C 编写一个服务器和一个客户端 (TCP),它们将用作一个简单的聊天系统。我对这些事情知之甚少,一直在引用this server examplethis client example.

注意:根据我有限的研究建议,我将 bzero() 和 bcopy() 更改为 memset() 和 memcpy(),但是在这两种情况下都发生了错误。除此之外,我自己的客户端与链接的示例仅在格式和输出方面有所不同。

    int sockfd, portno, n;
struct sockaddr_in serv_addr;
struct hostent * server;

char buffer[256];

if (argc < 3) {
fprintf(stderr,"usage %s hostname port\n", argv[0]);
exit(0);
}

portno = atoi(argv[2]);

sockfd = socket(AF_INET, SOCK_STREAM, 0);

if (sockfd < 0) { perror("failed_socket_open"); exit(1); }

server = (struct hostent *)gethostbyname(argv[1]);

if (server == NULL) {
fprintf(stderr,"host isn't real, everything is a lie\n");
exit(0);
}

memset((char *) &serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
memcpy( (char*)server->h_addr,(char*) &serv_addr.sin_addr.s_addr, server->h_length );

在这一行 (37) 上:

memcpy( (char*)server->h_addr, (char*)&serv_addr.sin_addr.s_addr, server->h_length );

有人告诉我:

client.c:37: error: dereferencing pointer to incomplete type
client.c:37: error: dereferencing pointer to incomplete type

这似乎是由于没有足够的关于 server->h_length 应该提供的大小的信息的结果。是否缺少某些库函数,或者其他什么?

最佳答案

struct hostent,也就是server,定义在netdb.h中。由于您不包含此 header ,因此在执行 server-> 时,您将取消引用指向不完整类型的指针。

关于c - 取消引用 TCP 客户端中不完整类型的指针? (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27470399/

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