我想用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

解决方案 »

  1.   

    inet_ntoa ? 不应该是 inet_aton 吗? 记不住,我从来记不住系统函数
      

  2.   


    额,是inet_addr吧,没这个atoa的
      

  3.   

    inet_ntoa(*(struct in_addr *)*strIP)
    这个inet_ntoa(*  这个*号这么添加不对吧,我也记不住这些API,总是习惯复制黏贴,其实高手都是直接把这些代码封装成一个类或啥的吧
      

  4.   


    改成inet_ntoa(*(struct in_addr *)strIP)了,但是还是错了
      

  5.   


    额,是inet_addr吧,没这个atoa的
    嗯,应该是这个
      

  6.   

    inet_ntoa(*((struct in_addr *)strIP))
    我都是习惯上面的写法,看起来直观