获取ip地址失败,小弟我认为是字符编码的原因,有时间的帮忙看看
获取ip地址失败,我认为是字符编码的原因,有时间的帮忙看看啊
------解决方案--------------------
typedef struct hostent {
char FAR *h_name;
char FAR FAR **h_aliases;
short h_addrtype;
short h_length;
char FAR FAR **h_addr_list;
} HOSTENT, *PHOSTENT, FAR *LPHOSTENT;
h_addr_list :
A NULL-terminated list of addresses for the host. Addresses are returned in network byte order. The macro h_addr is defined to be h_addr_list[0] for compatibility with older software.
是指向 DWORD 数组,每个item是一个地址,最后一个item是0,可以通过inet_ntoa转成字符串形式
#define WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
// Need to link with Ws2_32.lib
#pragma comment(lib, "ws2_32.lib")
int main(int argc, char **argv)
{
//-----------------------------------------
// Declare and initialize variables
WSADATA wsaData;
int iResult;
DWORD dwError;
int i = 0;
struct hostent *remoteHost;
char *host_name;
struct in_addr addr;
char **pAlias;
// Validate the parameters
if (argc != 2) {
printf("usage: %s ipv4address\n", argv[0]);
printf(" or\n");
printf(" %s hostname\n", argv[0]);
WSADATA wsadata;
if(0!=WSAStartup(MAKEWORD(2,2),&wsadata))//初始化
{
AfxMessageBox(_T("初始化网络环境失败!"));
return true;
}
char name[255];
gethostname(name,sizeof(name));
hostent *p=gethostbyname(name);
if(p!=NULL)
{
DWORD dwNum = MultiByteToWideChar(CP_ACP,0,(char *)p->h_addr_list,-1,NULL,0);
wchar_t *pwAddr;
pwAddr = new wchar_t[dwNum];
pwAddr=(wchar_t*)p->h_addr_list;
m_Addr.SetWindowTextW(pwAddr);
if(!pwAddr)
{
delete []pwAddr;
}
}
------解决方案--------------------
typedef struct hostent {
char FAR *h_name;
char FAR FAR **h_aliases;
short h_addrtype;
short h_length;
char FAR FAR **h_addr_list;
} HOSTENT, *PHOSTENT, FAR *LPHOSTENT;
h_addr_list :
A NULL-terminated list of addresses for the host. Addresses are returned in network byte order. The macro h_addr is defined to be h_addr_list[0] for compatibility with older software.
是指向 DWORD 数组,每个item是一个地址,最后一个item是0,可以通过inet_ntoa转成字符串形式
#define WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
// Need to link with Ws2_32.lib
#pragma comment(lib, "ws2_32.lib")
int main(int argc, char **argv)
{
//-----------------------------------------
// Declare and initialize variables
WSADATA wsaData;
int iResult;
DWORD dwError;
int i = 0;
struct hostent *remoteHost;
char *host_name;
struct in_addr addr;
char **pAlias;
// Validate the parameters
if (argc != 2) {
printf("usage: %s ipv4address\n", argv[0]);
printf(" or\n");
printf(" %s hostname\n", argv[0]);