首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

小菜的有关问题3:这句代码如何转换

2012-03-25 
小菜的问题3:这句代码怎么转换?大概意思就是 用 怎样转换 hostent 结构里德 ip 地址直接 赋值给 serverAdd

小菜的问题3:这句代码怎么转换?
大概意思就是 用 怎样转换 hostent 结构里德 ip 地址 直接 赋值给 serverAddr.sin_addr.S_un.S_addr =

我现在用的方法是 serverAddr.sin_addr.S_un.S_addr = inet_addr(inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list));
这个能行 但感觉 转换了这么多次 有没有更简洁的办法呢 ?

baidu 找到 下面一些代码: 我调试不成功。。 你们有没有比较简洁的办法啊。 我不需要获取多个 ip 只需要解析
host->h_addr里的第一个 ip 就够用了 。。


server_addr.sin_addr=*((struct in_addr *)(host->h_addr));

serverAddr.sin_addr.S_un.S_addr = *(int*)(*hp->h_addr);

memcpy(&server_addr.sin_addr, (struct in_addr *)host->h_addr, host->h_length);


[解决办法]
我用BCB里的socket组件貌似很简单啊
[解决办法]
给你个例子

C/C++ code
AnsiString __stdcall getHostIP(AnsiString &host){   WSADATA wsaData;   AnsiString IP;   WSAStartup(MAKEWORD(2,0),&wsaData);   char hostname[128];   if(gethostname(hostname,128)!=0)      return AnsiString("");   if(host.IsEmpty())   {         host=hostname;   }   try   {      struct hostent *hp=gethostbyname(host.c_str());      IP=inet_ntoa(*(struct in_addr*)hp->h_addr_list[0]);   }   catch(...)   {      IP="";   }   WSACleanup();   return IP;}void __fastcall TForm1::Button1Click(TObject *Sender){   String host;   Caption = getHostIP(host);}
[解决办法]
C/C++ code
serverAddr.S_un.S_addr = *(u_long *)hostinfo->h_addr_list[0]; 

热点排行