//==================================头文件============================================
//#include <windows.h>
#include<Winsock2.h>
#include<stdio.h>
#include "resource.h"
//===========================库文件=====================================================
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "mswsock.lib")
//=========================全局变量=====================================================
char g_szIpAdress[20];
//=========================全局函数=====================================================
BOOL CALLBACK DialogFun(HWND, UINT,WPARAM, LPARAM);
BOOL GetLocalIP();//取得本主机IP
BOOL SetDlgIpAndPort(HWND);//设置为对话框IP
DWORD IniSOCKDLL();//协议协商
//======================================================================================
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
if(100==DialogBox(hinstance,"mydialog",NULL,(DLGPROC)DialogFun))
{
PostQuitMessage(WM_QUIT);
}
while (GetMessage(&msg, (HWND) NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
UNREFERENCED_PARAMETER(lpCmdLine);
}
//========================================================================================
BOOL CALLBACK DialogFun(HWND dlghwnd, UINT message,WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_PAINT:
return FALSE;
case WM_INITDIALOG :
{
IniSOCKDLL();//开始的时候没有注意到这个 郁闷
if(FALSE==GetLocalIP())
{
return FALSE;
}
SetDlgIpAndPort(dlghwnd);
return FALSE;
}
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDOK:
{
EndDialog(dlghwnd,100);//定义100来确定退出对话框
return TRUE;
}
case IDC_SET_PORTANDIP:
{
}
case IDC_SEND:
{
}
}
return FALSE;
}
return FALSE;
}
return FALSE;
}
BOOL GetLocalIP()
{
//char szIpAdress[20];
hostent* IpAdress;//存放网络字节的IP地址
char NameBuffer[30];//定义存放主机名字的缓冲区
if(SOCKET_ERROR==gethostname(NameBuffer,sizeof(NameBuffer)))
{
return FALSE;
}
IpAdress=gethostbyname(NameBuffer);
if(NULL==inet_ntoa (*(struct in_addr *)*IpAdress->h_addr_list))
{
return FALSE;
}
//用g_szIpAdress来保存IP的地址
strcpy (g_szIpAdress,inet_ntoa (*(struct in_addr *)*IpAdress->h_addr_list));
return TRUE;
}
BOOL SetDlgIpAndPort(HWND DialogHwnd)
{
SetDlgItemText(DialogHwnd,IDC_IPADDRESS,g_szIpAdress);
SetDlgItemInt(DialogHwnd,IDC_PORT,80,FALSE);
return 0;
}
DWORD IniSOCKDLL()
{
WORD wVersionRequested;
WSADATA wsaData;
int err=0;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
return err;
}
程序基本几是上面的
开始调用的时候没有协商协议
导致IP显示不了