sockUtil.cpp
上传用户:wlquartz
上传日期:2022-03-04
资源大小:89k
文件大小:2k
开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "sockutil.h"
  3. #include <stdlib.h>
  4. #include <string.h>
  5. /*++
  6. Descripci髇:
  7.     Convierte una Ip de cadena a formato de red
  8. Argumentos:
  9.     ip - cadena que contiene la direccion ipstring that represent a ip address
  10.     
  11.     Si la cadena no tiene el formato correcto(x.x.x.x) devuelve -1. Si los octetos
  12.     son menores de 0 o mayores de 255 devuelve direccion 0.0.0.0.
  13. Valores devueltos:
  14. ip en formato de red
  15. --*/
  16. int inet_addr(const char *sIp, unsigned long *lIp)
  17. {
  18. int octets[4];
  19. int i;
  20. const char * auxCad = sIp;
  21. *lIp = 0;
  22. // Extraigo cada uno de los octetos. Atoi extrae caracteres hasta encontrar
  23. // un caracter no numerico, en nuestro el '.'
  24. for(i = 0; i < 4; i++)
  25. {
  26. octets[i] = atoi(auxCad);
  27. if(octets[i] < 0 || octets[i] > 255)
  28. return -1;
  29. *lIp |= (octets[i] << (i*8));
  30. // Acualizo auxCad para que apunte al siguiente octeto
  31. auxCad = strchr(auxCad, '.');
  32. if(auxCad == NULL && i!=3)
  33. return -1;
  34. auxCad++;
  35. }
  36. return 0;
  37. }
  38. /*++
  39. Descripci髇:
  40.     Cambia el orden de los octetos. Mayor orden a menor orden y viceversa.
  41. Argumentos:
  42.     port - Numero a convertir
  43. Valores devueltos:
  44. puerto convertido
  45. --*/
  46. unsigned short htons(unsigned short port)
  47. {
  48. unsigned short portRet;
  49. portRet = ((port << 8) | (port >> 8));
  50. return portRet;
  51. }
  52. char *IpToString(char *ip, unsigned long lIp)
  53. {
  54. char octeto[4];
  55. ip[0] = 0;
  56. itoa(lIp & 0xff, octeto, 10);
  57. strcat(ip, octeto);
  58. strcat(ip, ".");
  59. itoa((lIp >> 8) & 0xff, octeto, 10);
  60. strcat(ip, octeto);
  61. strcat(ip, ".");
  62. itoa((lIp >> 16) & 0xff, octeto, 10);
  63. strcat(ip, octeto);
  64. strcat(ip, ".");
  65. itoa((lIp >> 24) & 0xff, octeto, 10);
  66. strcat(ip, octeto);
  67. return ip;
  68. }