【发布时间】:2014-12-14 14:40:06
【问题描述】:
我正在尝试用 C 语言创建一个服务器和一个客户端 (TCP),它们将用作一个简单的聊天系统。我对这些事情知之甚少,一直在参考this server example 和this 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 应该提供的大小信息的结果。是否有一些我缺少的库函数,或者其他什么?
【问题讨论】:
标签: c sockets tcp client-server