分享

VC中IP地址控件的赋值与取值

 herowuking 2015-06-23

 一、CIPAsressCtr初始化代码只能写在OnInitDialog()中
#include <afxsock.h>
//把CString表示的IP地址写到IP Address里面



CString strIP="192.168.0.17"; 
DWORD dwIP=ntohl(inet_addr(strIP)); 
m_IP.SetAddress(dwIP);
//读取IP Address的内容. 


DWORD dwIP; 
IN_ADDR ia; 
CString strIP; 
m_IP.GetAddress(dwIP); 
ia.S_un.S_addr=htonl(dwIP); 
strIP=inet_ntoa(ia);

二、VC下怎样使用IP Address Control 控件

问题:怎样从IP Address控件获得IP地址,并交给程序(如socket中的connect函数)处理。

 

方法一:

  //m_Ip为IP Address控件的变量名
  m_Ip.GetAddress(IPByte[0],IPByte[1],IPByte[2],IPByte[3]);     获得IP Address控件中的4部分数字


  //------------------把IP地址转化为字符   
  CString   strI;="";   
  char   temp1[10],temp2[10],temp3[10],temp4[10];   
  itoa(IPByte[0],temp1,10);   
  itoa(IPByte[1],temp2,10);   
  itoa(IPByte[2],temp3,10);   
  itoa(IPByte[3],temp4,10);   
    
  strIp+=temp1;   
  strIp+=".";   
  strIp+=temp2;   
  strIp+=".";   
  strIp+=temp3;   
  strIp+=".";   
  strIp+=temp4;

 

-----------------------

_itoa函数介绍

 定义在stdlib中的 ,  _CRTIMP   char   *   __cdecl   _itoa(int,   char   *,   int);   
我看的源代码中是这么调用的:   
  _itoa(i,str3,10);  

功能:把整形转换为字符类型,   
含义:  i:需要转换的整形   
  str3:字符串缓冲区   
  10:十进制方式

 

----------------

方法二(简单):

  m_IP.GetAddress(f0,f1,f2,f3);//m_IP是ip控件的控制变量   
  m_addr.Format("%d%s%d%s%d%s%d",f0,".",f1,".",f2,".",f3);  

使用VC提供的Format函数,省去了整数转化为字符串的操作。

http://leocna.blog.163.com/blog/#m=0&t=1&c=fks_084067082085083071082094086095080095083066085087082071

三、VC中IP地址控件的赋值与取值

CIPAddressCtrl m_ipTarget; // 假设你的IP控件为m_ipTarget 
CString m_szIPAddress;

// 取值到m_szIPAddress
BYTE nField0 = 0, nField1 = 0, nField2 = 0, nField3 = 0;
if(!m_ipTarget.IsBlank())
{
    m_ipTarget.GetAddress(nField0, nField1, nField2, nField3);
}
m_szIPAddress.Format(_T("%d.%d.%d.%d"), nField0, nField1, nField2, nField3);

// 赋值给m_ipTarget
int nField0 = 0, nField1 = 0, nField2 = 0, nField3 = 0;
if(_stscanf(m_szIPAddress, _T("%d.%d.%d.%d"), &nField0, &nField1, &nField2, &nField3) == 4)
{
    m_ipTarget.SetAddress(nField0, nField1, nField2, nField3);
}

同样也可以这样:

// 取值到m_szIPAddress 
BYTE b[4]; 
((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS))->GetAddress(b[0],b[1],b[2],b[3]); 
m_szIPAddress.Format("%d.%d.%d.%d",b[0],b[1],b[2],b[3]);

// 赋值给m_ipTarget
//地址初始化 
char name[20]; 
gethostname(name,20); 
hostent * host=gethostbyname(name); 
struct in_addr inAddr; 
memmove(&inAddr,host->h_addr_list[0],4); 
m_sIP=inet_ntoa(inAddr); 
((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS))->SetAddress(inAddr.S_un.S_un_b.s_b1,inAddr.S_un.S_un_b.s_b2,inAddr.S_un.S_un_b.s_b3,inAddr.S_un.S_un_b.s_b4);

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多