- 论坛徽章:
- 0
|
/* ------------------------------------------------------------------------- */
char *IP_addr(USGL ul_addr, char *ipaddr)
/*
Convert unsigned long number to IP address string
Return ipaddr
*/
{
#if defined(__OS400__) /* AS/400 */ \
| __nonstopux /* Tandem */ \
| __hpux /* HP 9000 */
sprintf(ipaddr, "%d.%d.%d.%d", (ul_addr & 0xFF000000L) >> 24,
(ul_addr & 0x00FF0000L) >> 16, (ul_addr & 0x0000FF00L) >> 8,
(ul_addr & 0x000000FFL));
#elif (unix & i386 & _SCO_COFF) /* SCO UNIX */ \
| (unix & i386 & __HIGHC__ & _ATT4) /* NCR UNIX */
sprintf(ipaddr, "%d.%d.%d.%d", (ul_addr & 0x000000FFL),
(ul_addr & 0x0000FF00L) >> 8, (ul_addr & 0x00FF0000L) >> 16,
(ul_addr & 0xFF000000L) >> 24);
#else /* UNIX ? */
sprintf(ipaddr, "%d.%d.%d.%d", (ul_addr & 0x000000FFL),
(ul_addr & 0x0000FF00L) >> 8, (ul_addr & 0x00FF0000L) >> 16,
(ul_addr & 0xFF000000L) >> 24);
#endif
return ipaddr;
}
#define MAX_IP_LEN 15
char client_ipaddr[MAX_IP_LEN+1];
struct sockaddr_in server, client;
...
while(TRUE)
{
WrtLog("!!- %s: accept() ...\n", NOW());
len_addr = sizeof(client);
msgsock = accept(sock, (struct sockaddr *)&client, &len_addr);
WrtLog("!!! %s: accept() OK! Client IP:%s\n",
NOW(), IP_addr(client.sin_addr.s_addr, client_ipaddr));
if(strcmp(gcAAA_IP, client_ipaddr) != 0)
{
WrtLog("!!? %s: %s - Invalid client IP!\n", NOW(), client_ipaddr);
close(msgsock);
continue;
}
... |
|