IP控件之字符串转化

来源:互联网 发布:720 全景 h5 源码 编辑:程序博客网 时间:2024/06/06 07:12
CIpAddressCtrl的GetAddress()

int GetAddress(
   BYTE& nField0,
   BYTE& nField1,
   BYTE& nField2,
   BYTE& nField3 
);

int GetAddress(
   DWORD& dwAddress 
);

CString strIP;
BYTE IP0,IP1,IP2,IP3;
DWORD dwIP;
m_Ip.GetAddress(&IP0,&IP1,&IP2,&IP3);
strIP.Format(_T("%d.%d.%d.%d"),IP0,IP1,IP2,IP3);
或者
m_Ip.GetAddress(&dwIP);
strIP.Format(_T("%d.%d.%d.%d"),(BYTE)dwIP>>24,(BYTE)dwIP>>16,(BYTE)dwIP>>8,(BYTE)dwIP);

如果你想去IP可以直接用:

m_Ip.GetWindowText(strIP);



获取本地IP地址,并在IP CONTROL控件中显示出来

char sHostName[100];
 gethostname(sHostName,sizeof(sHostName));
 struct hostent FAR * lpHostEnt=gethostbyname(sHostName);
 if(lpHostEnt==NULL)
 {
  MessageBox(_T("error"));
 }
 //获取IP
 LPSTR lpAddr=lpHostEnt->h_addr_list[0];
 if(lpAddr)
 {
  struct in_addr inAddr;
  memmove(&inAddr,lpAddr,4);

  CString str;
  str=inet_ntoa(inAddr);
  m_edit=str;
  UpdateData(0);


  DWORD  dw1=inet_addr(inet_ntoa(inAddr));
  WORD  wd1=LOWORD(dw1);//取高十六位
  WORD  wd2=HIWORD(dw1);//取低十六位
  BYTE  bte1=LOBYTE(wd1);
  BYTE  bte2=HIBYTE(wd1);
  BYTE  bte3=LOBYTE(wd2);
  BYTE  bte4=HIBYTE(wd2);

  m_ip.SetAddress(bte1,bte2,bte3,bte4);

 //m_ip.SetAddress(inet_addr(inet_ntoa(inAddr)));
  

 }

 

取出的IP地址,先转化为CString,紧接着转化为DWORD。如果这时候直接将DWORD在IP CONTROL中显示出来的话,将是一个不正确顺序的IP,低位和高位的顺序完全相反。只有将里面的数据取出,放在BYTE里,然后按照从低到高的顺序在IP CONTROL中显示出来,才能正确的显示本地IP。

该程序在VS2008.NET SP1环境下调试通过。



//将CString   型IP地址在IPAddressCtrl中显示  
CString   strIP="192.168.0.10";  
DWORD   dwIP;  
dwIP   =   inet_addr(strIP);  
unsigned   char   *pIP   =   (unsigned   char*)&dwIP;  
m_ipAddr.SetAddress(*pIP,   *(pIP+1),   *(pIP+2),   *(pIP+3));  

//将IPAddressCtrl中的IP地址获得并转换成CString型  
unsigned   char   *pIP;  
CString   strIP;  
DWORD   dwIP;  
m_ipAddr.GetAddress(dwIP);  
pIP   =   (unsigned   char*)&dwIP;  
strIP.Format("%u.%u.%u.%u",*(pIP+3),   *(pIP+2),   *(pIP+1),   *pIP); 


CIPAddressCtrl的用法 

CIPAddressCtrl的用法
CIPAddressCtrl的值转换成CString,CString转换成CIPAddressCtrl
CString strIP="192.168.1.184";
m_IPAddr.SetWindowText(strIP);
CString strIP;
m_IPAddr.GetWindowText(strIP);

CString strIP="192.168.1.184";
DWORD dwAddress= ntohl( inet_addr(strIP));
m_IPAddr.SetAddress(dwAddress);

为控件设置数据
m_addr.SetAddress(192,168,0,2);
从控件得到数据
BYTE b1,b2,b3,b4;
m_addr.GetAddress(b1,b2,b3,b4);


原创粉丝点击