Main Page | Alphabetical List | Compound List | File List | Compound Members | File Members

ipaddr.h File Reference

Go to the source code of this file.

Functions

int IPAddr_GetHostID (char *AddrBuff)


Function Documentation

int IPAddr_GetHostID char *  AddrBuff  ) 
 

Definition at line 28 of file ipaddr.c.

References IPAddr_AddrToString(), MAXHOSTNAME, WS_VERSION_MAJOR, WS_VERSION_MINOR, and WS_VERSION_REQD.

Referenced by GMenu_Key().

00029 {
00030         WSADATA                 wsaData;
00031     char                        HostName[MAXHOSTNAME];
00032     LPHOSTENT           HostEnt;
00033     SOCKADDR_IN         LocalAddress;
00034     SOCKADDR_IN         RemoteAddress;
00035     SOCKET                      Socket;
00036     int                         Res;
00037         int                             i;
00038 
00039         Res = WSAStartup(WS_VERSION_REQD,&wsaData);
00040         if      (Res != 0)
00041                 return 0;
00042 
00043         if      (( LOBYTE (wsaData.wVersion) < WS_VERSION_MAJOR) || 
00044                 ( LOBYTE (wsaData.wVersion) == WS_VERSION_MAJOR &&
00045                 HIBYTE (wsaData.wVersion) < WS_VERSION_MINOR))
00046         {
00047                 return 0;
00048         }
00049 
00050     LocalAddress.sin_addr.s_addr = INADDR_ANY;
00051     
00052     Res = gethostname(HostName, sizeof(HostName));
00053     if  (Res != SOCKET_ERROR)
00054     {
00055                 HostEnt = gethostbyname(HostName);
00056                 if      (HostEnt)
00057                 {
00058                         IPAddr_AddrToString(*(unsigned long *)HostEnt->h_addr_list[0], AddrBuff);
00059                         i = 0;
00060                         while   (HostEnt->h_addr_list[i])
00061                                 i++;
00062                         return i;
00063                 }
00064     } 
00065     
00066     Socket = socket(AF_INET, SOCK_DGRAM, 0);
00067         if      (Socket != INVALID_SOCKET)
00068         {
00069                 RemoteAddress.sin_family                = AF_INET;
00070                 RemoteAddress.sin_port                  = htons(IPPORT_ECHO);
00071                 RemoteAddress.sin_addr.s_addr   = inet_addr("199.1.90.2");
00072                 Res = connect(Socket, (SOCKADDR *)&RemoteAddress, sizeof(SOCKADDR));
00073                 if      (Res != SOCKET_ERROR)
00074                 {
00075                         int     AddrSize = sizeof(SOCKADDR);
00076 
00077                         getsockname(Socket, (LPSOCKADDR)&LocalAddress, (int *)&AddrSize);
00078 
00079                         IPAddr_AddrToString(LocalAddress.sin_addr.s_addr, AddrBuff);
00080 
00081                         return 1;
00082                 }
00083 
00084                 closesocket(Socket);
00085         }
00086 
00087         return 0;
00088 }


Generated on Tue Sep 30 12:37:43 2003 for GTestAndEngine by doxygen 1.3.2