当前位置: 技术问答>linux和unix
socket客户端问题
来源: 互联网 发布时间:2015-11-19
本文导语: 我用c在红帽系统中写了一个socket客户端的小程序,但用gcc编译的时候总通不过,出问题的那一句代码是: struct hostent * he; struct sockaddr_in their_addr; 中间略 their_addr.sin_addr = *((struct in_addr *)he->h_addr); 编译时gcc提示...
我用c在红帽系统中写了一个socket客户端的小程序,但用gcc编译的时候总通不过,出问题的那一句代码是:
struct hostent * he;
struct sockaddr_in their_addr;
中间略
their_addr.sin_addr = *((struct in_addr *)he->h_addr);
编译时gcc提示:dereferencing pointer to incomplete type
请问这个如何解决!!!
下面是全部代码,分数不够再加。
struct hostent * he;
struct sockaddr_in their_addr;
中间略
their_addr.sin_addr = *((struct in_addr *)he->h_addr);
编译时gcc提示:dereferencing pointer to incomplete type
请问这个如何解决!!!
下面是全部代码,分数不够再加。
|
少了一个头文件
#include
不过还是建议你看看hostent的定义
#include
不过还是建议你看看hostent的定义
|
在struct hostent结构中定义为
#define h_addr h_addr_list[0]
h_addr本身已定义为第一个IP地址,我认为应该去掉*((struct in_addr *)he->h_addr);
最前面的*
#define h_addr h_addr_list[0]
h_addr本身已定义为第一个IP地址,我认为应该去掉*((struct in_addr *)he->h_addr);
最前面的*
|
their_addr.sin_addr = *((struct in_addr *)(he->h_addr));
可以这样的
their_addr.sin_addr.s_addr =inet_addr("xxx.xxx.xxx.xxx");
可以这样的
their_addr.sin_addr.s_addr =inet_addr("xxx.xxx.xxx.xxx");