气愤,这个程序显示IP功能搞了半天才整好

来源:互联网 发布:驾照考试预约软件 编辑:程序博客网 时间:2024/04/29 16:06

//==================================头文件============================================

//#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显示不了

原创粉丝点击