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

ipaddr.c File Reference

#include <windows.h>
#include <winsock.h>
#include <stdio.h>
#include <string.h>
#include "ipaddr.h"

Go to the source code of this file.

Defines

#define MAXHOSTNAME   256
#define WS_VERSION_REQD   0x0101
#define WS_VERSION_MAJOR   HIBYTE(WS_VERSION_REQD)
#define WS_VERSION_MINOR   LOBYTE(WS_VERSION_REQD)

Functions

void IPAddr_AddrToString (unsigned long Addr, char *AddrBuff)
int IPAddr_GetHostID (char *AddrBuff)


Define Documentation

#define MAXHOSTNAME   256
 

Definition at line 8 of file ipaddr.c.

Referenced by IPAddr_GetHostID().

#define WS_VERSION_MAJOR   HIBYTE(WS_VERSION_REQD)
 

Definition at line 25 of file ipaddr.c.

Referenced by IPAddr_GetHostID().

#define WS_VERSION_MINOR   LOBYTE(WS_VERSION_REQD)
 

Definition at line 26 of file ipaddr.c.

Referenced by IPAddr_GetHostID().

#define WS_VERSION_REQD   0x0101
 

Definition at line 24 of file ipaddr.c.

Referenced by IPAddr_GetHostID().


Function Documentation

void IPAddr_AddrToString unsigned long  Addr,
char *  AddrBuff
[static]
 

Definition at line 10 of file ipaddr.c.

Referenced by IPAddr_GetHostID().

00011 {
00012         AddrBuff += sprintf(AddrBuff, "%d.", Addr & 0xff);
00013         Addr = Addr >> 8;
00014 
00015         AddrBuff += sprintf(AddrBuff, "%d.", Addr & 0xff);
00016         Addr = Addr >> 8;
00017 
00018         AddrBuff += sprintf(AddrBuff, "%d.", Addr & 0xff);
00019         Addr = Addr >> 8;
00020 
00021                                 sprintf(AddrBuff, "%d",  Addr & 0xff);
00022 }

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