我想用getbyhostname获取本机的IP,然后填充sockaddr_in里的但是出现了下列的错误
error C2440: '=' : cannot convert from 'char *' to 'unsigned long'
下面是代码
m_listensock=socket(AF_INET,SOCK_STREAM,0);
char name[155];
HOSTENT *hostinfo;
char* strIP;
sockaddr_in server; gethostname( name, sizeof(name)); //获取主机名
hostinfo=gethostbyname(name); //有主机名得到主机结构指针
strIP = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
server.sin_addr.S_un.S_addr=inet_ntoa(*(struct in_addr *)*strIP);//错误指向这里
server.sin_family=AF_INET;
server.sin_port=htons(m_nport);
bind(m_listensock,(sockaddr *)&server,sizeof(server));
希望可以快点解决gethostname
error C2440: '=' : cannot convert from 'char *' to 'unsigned long'
下面是代码
m_listensock=socket(AF_INET,SOCK_STREAM,0);
char name[155];
HOSTENT *hostinfo;
char* strIP;
sockaddr_in server; gethostname( name, sizeof(name)); //获取主机名
hostinfo=gethostbyname(name); //有主机名得到主机结构指针
strIP = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
server.sin_addr.S_un.S_addr=inet_ntoa(*(struct in_addr *)*strIP);//错误指向这里
server.sin_family=AF_INET;
server.sin_port=htons(m_nport);
bind(m_listensock,(sockaddr *)&server,sizeof(server));
希望可以快点解决gethostname
额,是inet_addr吧,没这个atoa的
这个inet_ntoa(* 这个*号这么添加不对吧,我也记不住这些API,总是习惯复制黏贴,其实高手都是直接把这些代码封装成一个类或啥的吧
改成inet_ntoa(*(struct in_addr *)strIP)了,但是还是错了
额,是inet_addr吧,没这个atoa的
嗯,应该是这个
我都是习惯上面的写法,看起来直观