www.pudn.com > FirewallFHK_src.rar > sockUtil.cpp
#include "stdafx.h" #include "sockutil.h" #include#include /*++ Descripción: Convierte una Ip de cadena a formato de red Argumentos: ip - cadena que contiene la direccion ipstring that represent a ip address Si la cadena no tiene el formato correcto(x.x.x.x) devuelve -1. Si los octetos son menores de 0 o mayores de 255 devuelve direccion 0.0.0.0. Valores devueltos: ip en formato de red --*/ int inet_addr(const char *sIp, unsigned long *lIp) { int octets[4]; int i; const char * auxCad = sIp; *lIp = 0; // Extraigo cada uno de los octetos. Atoi extrae caracteres hasta encontrar // un caracter no numerico, en nuestro el '.' for(i = 0; i < 4; i++) { octets[i] = atoi(auxCad); if(octets[i] < 0 || octets[i] > 255) return -1; *lIp |= (octets[i] << (i*8)); // Acualizo auxCad para que apunte al siguiente octeto auxCad = strchr(auxCad, '.'); if(auxCad == NULL && i!=3) return -1; auxCad++; } return 0; } /*++ Descripción: Cambia el orden de los octetos. Mayor orden a menor orden y viceversa. Argumentos: port - Numero a convertir Valores devueltos: puerto convertido --*/ unsigned short htons(unsigned short port) { unsigned short portRet; portRet = ((port << 8) | (port >> 8)); return portRet; } char *IpToString(char *ip, unsigned long lIp) { char octeto[4]; ip[0] = 0; itoa(lIp & 0xff, octeto, 10); strcat(ip, octeto); strcat(ip, "."); itoa((lIp >> 8) & 0xff, octeto, 10); strcat(ip, octeto); strcat(ip, "."); itoa((lIp >> 16) & 0xff, octeto, 10); strcat(ip, octeto); strcat(ip, "."); itoa((lIp >> 24) & 0xff, octeto, 10); strcat(ip, octeto); return ip; }