Go to the source code of this file.
Functions | |
| 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 }
|
1.3.2