/usr/include/netinet/in.h:138:注意:候选人是:in_addr& in_addr :: operator =(const in_addr&)

时间:2013-04-10 12:17:43

标签: tcp client-server

我写了一个简单的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 ='不匹配(* host-&gt; hostent :: h_addr_list)' /usr/include/netinet/in.h:138:注意:候选人是:in_addr&amp; in_addr :: operator =(const in_addr&amp;) * 错误代码1 clearmake:错误:“客户端”

的构建脚本失败

我的实施发生了什么?

1 个答案:

答案 0 :(得分:0)

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

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

Reference sources