MFC中IPADDRESS控件的使用

更新时间:2024-04-27 06:54:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

void CMyDlg::OnIPAddress() {

// 此段代码:独立的获取本机IP地址和计算机名 WORD wVersionRequested; WSADATA wsaData; char name[255]; CString ip;

PHOSTENT hostinfo;

wVersionRequested = MAKEWORD(2, 0);

if(gethostname(name, sizeof(name)) == 0) {

if((hostinfo = gethostbyname(name)) != NULL) {

ip = inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list); }

if (WSAStartup(wVersionRequested, &wsaData) == 0) {

}

WSACleanup( ); }

// AfxMessageBox(name);//name里是本机名 // AfxMessageBox(ip); //ip中是本机IP

m_IPAddress = ip; // m_IPAddress是IP控件对应的变量,ip是Edit控件对应的变量 // m_IP.SetAddress(255, 86, 255, 68); // 直接设置控件里显示的值 // 本段代码:已知IP Address控件里显示的值,转换为CString格式 /*

// 下面代码实现:把IP Address控件里的值转化为 CString格式 unsigned char *pIP; CString strIP; DWORD dwIP;

m_IP.GetAddress(dwIP); // m_IP为IP Address控件对应的变量 pIP = (unsigned char*)&dwIP;

strIP.Format(\ *(pIP+2), *(pIP+1), MessageBox(strIP);*/ /*

// 下面代码实现:把IP Address控件里的值转化为 CString格式 BYTE f0, f1, f2, f3;

m_IP.GetAddress(f0, f1, f2, f3); CString m_addr;

m_addr.Format(\MessageBox(m_addr);*/ /*

// 下面代码实现:把IP Address控件里的值转化为 CString格式 BYTE IPByte[4];

m_IP.GetAddress(IPByte[0], IPByte[1], IPByte[2], IPByte[3]); CString strIP = \

char temp1[10], temp2[10], temp3[10], temp4[10];

*pIP);

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; MessageBox(strIP);*/ /*

// 下面代码实现:把IP Address控件里的值转化为 CString格式 CString strx;

m_IP.GetWindowText(strx); MessageBox(strx);*/

// 此段代码:用获取的IP地址值,显示到对话框里IP Address控件中 /* CString strIP;

GetDlgItemText(IDC_EDIT_IPAddress, strIP); m_IP.SetWindowText(strIP);*/

m_IP.SetWindowText(ip); // 把IP地址(CString类型)直接显示到IP Address控件中

}

UpdateData(FALSE);

MFC中怎样用 IP Address Control?

CIPAddressCtrl m_IP; CString temp;

在IP Address Control对应的函数中获取IP地址: m_IP.UpdateData();

m_IP.GetWindowTextW(temp); 获得的IP地址存入temp。

二、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(\ 使用VC提供的Format函数,省去了整数转化为字符串的操作。

三、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(\

// 赋值给m_ipTarget

int nField0 = 0, nField1 = 0, nField2 = 0, nField3 = 0;

if(_stscanf(m_szIPAddress, _T(\{

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(\ // 赋值给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);

MFC中IP地址控件中获取到IP地址转换字符串

MFC中,用CIPAddress类的GetAddress()得到BYTE或DWORD的IP地址,转换成字符串的方法:

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(\或者

m_Ip.GetAddress(&dwIP);

strIP.Format(_T(\

如果你想去IP可以直接用: m_Ip.GetWindowText(strIP);

VC++ MFC编程中 IP控件的使用

IP地址在计算机中表示是32位二进制,通过GetAddress()来获得IP时,得到的是一个由二进制所转化的长整型IP地址,比如IP地址202.201.112.98的长整型表示就是:3402199138,同样也可以使用http://3402199138/来访问,所以在进行套接字绑定时要进行相应的转换。

//将CString 型IP地址在IPAddressCtrl中显示 CString strIP= \ 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( \ *(pIP+2), *(pIP+1), *pIP);

本文来源:https://www.bwwdw.com/article/piyg.html

Top