0

我写了一个简单的 TCP/IP 网络应用程序(服务器和客户端)。在客户端应用程序的代码中,我这样做了,然后在 Linux 下使用'g++ -o client client.cpp'构建。

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char* argv[])
{
    struct sockaddr_in server_addr;
    struct hostent* host;

    ....
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(nPort);
    server_addr.sin_addr = *((struct in_ddr*)host->h_addr); /*It complains as below while building*/
    ....
}

client.cpp:在函数'int main(int,char**)'中:client.cpp:56:错误:'server_addr.sockaddr_in :: sin_addr = *(in_ddr *)(*主机中的'operator ='不匹配->hostent::h_addr_list)' /usr/include/netinet/in.h:138:注意:候选者是:in_addr& in_addr::operator=(const in_addr&) *错误代码 1 clearmake:错误:“客户端的构建脚本失败” "

我的实施发生了什么?

4

1 回答 1

0

您正在尝试将地址列表设置为单个地址。您需要使用方括号来引用您想要的地址。host->h_addr_list[0]

至少这是我从你的错误中得到的。

参考来源

于 2013-12-02T05:18:29.110 回答