/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

obtener ip

 
      Índice del Foro elrincondelc.com -> Programación en Servidores
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
wildcrue



Registrado: 06 Abr 2006
Mensajes: 45
Ubicación: Guanajuato

MensajePublicado: 16/04/2006 7:30 am
Título: obtener ip

Hola, mi idea es hacer un programa en C bajo windows el cual al abrirlo te muestre tu dirección ip, ¿alguien me puede dar una idea?
_________________
Atte.
Wildcrue
Volver arriba
Hawk



Registrado: 23 Abr 2006
Mensajes: 5

MensajePublicado: 24/04/2006 9:13 am
Título:

Por favor q alguien conteste q a mi tb m interesa!!
Volver arriba
wildcrue



Registrado: 06 Abr 2006
Mensajes: 45
Ubicación: Guanajuato

MensajePublicado: 24/04/2006 3:07 pm
Título: posible solucion

Hace poco terminé un programa tipo chat que funciona bien para computadoras que están en red, en este programa pongo un ejemplo de como obtener una ip ejecutando dentro del programa un .bat, el cual manda lo generado por sus comandos a un .txt el cual a su vez es abierto en el programa y renombrado posteriormente, les pongo el programa para que lo chequen, esta hecho en Microsoft Visual C++:

Codigo del .cpp:
Código:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <iostream.h>
#include <windows.h>
#include <time.h>
#include "chat4.h"
#include "chat4a.h"


int conts=0;
char dat1[20]={' '};

//Contraseña de administrador=admin

void main (void)
{
   //Inicio del clock
   clock_t fin;
   presentacion();
   tusuario();
   chat();
   //Clicks del reloj convertidos a segundos
   fin=clock();
   MessageBox(NULL,"Gracias por haber utilizado este software\nhttp://wildcrue.superihost.com", "Saliendo del programa", NULL);
   printf( "\n\nUsted estuvo en el programa durante: %d segundos\n\n", fin/CLK_TCK);
   system("pause");
}


Codigo de chat4.h:
Código:
extern int conts;
extern char dat1[20];
// Prototipos
void presentacion (void);
//MENU
void tusuario (void);
//ABRIR Y CERRAR ARCHIVOS
FILE *aopen(void);
FILE *ropen(void);

//TIPOS DE USUARIOS
void nuser (FILE *);
int luser (FILE *);
void closea (FILE *);
void leerusuarios (FILE *);

//AUTENTIFICAR ADMINISTRADOR
void admin (void);

//DEL CHAT
void chat (void);

//Perfiles
void listado (FILE *);
void profiles (void);




struct datos
{
   char usuario[50], arc[50];
   char pass[50], nombre[100], pt[100], car[100], dom[100], email[50];
   int edad, calificacion, semestre;
};

//Función de presentacion, incluye impresion de hora y fecha
void presentacion (void)
{
   printf( "\n\n\t\t\t----------------\n");
   printf( "\t\t\t|              |\n");
   printf( "\t\t\t|              |\n");
   printf( "\t\t\t|    -----------\n");
   printf( "\t\t\t|    |          \n");
   printf( "\t\t\t|    |          \n");
   printf( "\t\t\t|    |          \n");
   printf( "\t\t\t|    |          \n");
   printf( "\t\t\t|    |          \n");
   printf( "\t\t\t|    -----------\n");
   printf( "\t\t\t|              |\n");
   printf( "\t\t\t|              | H A T  v1.0\n");
   printf( "\t\t\t----------------\n");
   MessageBox(NULL,"Bienvenido a la version 1.0 del Chat\nDudas y comentarios a: ","Pantalla de bienvenida",NULL);
   //Para la hora
   time_t t;
    t = time(NULL);
    printf("\t\t\t%s", asctime(localtime(&t)));
   printf( "\n\t\t\tPresione cualquier tecla para continuar");
   getch();
   system("cls");
}



// MENU
void tusuario (void)
{
   char select=' ';
   int conta=0;
   while( conta==0 )
   {
      printf( "\nSeleccione su tipo de usuario:\n\n");
      printf( "a) Usuario nuevo\n");
      printf( "b) Usuario ya registrado (loggearse)\n");
      printf( "c) Administrador: Checar base de datos\n");
      printf( "d) Usuario que desea navegar por los perfiles:\n");
      printf( "e) Salir del sistema\n");
      printf( "f) Limpiar pantalla\n");
      printf( "Escriba el inciso que le corresponda: ");
      select=getche();
      if( select=='a' || select=='A' )
      {
         //Usuario nuevo
         
         printf("\nHa elegido - Usuario nuevo\n");
         FILE *apf=NULL;
         FILE *apf2=NULL;
         system("cls");
         apf=aopen();
         nuser(apf);
         closea(apf);
      }
      if( select=='b' || select=='B' )
      {
         //Usuario ya registrado
         printf( "\nHa elegido loggearse!\n");
         FILE *apf=NULL;
         char resp=' ';
         int dam=0;
         system("cls");
         apf=ropen();
         dam= luser(apf);
         closea(apf);
         conts++;
         if( dam==1 )
         {
         //Guardar ip
         char des=' ';
            printf( "Por la seguridad de nuestro servidor es necesario que obtengamos informacion\n");
            printf( "de su ordenador para evitar problemas tales como fraudes o mal uso del soft\n");
            printf( "Desea continuar? s= para continuar || n= para salir del programa\n");
            des=getche();
            if(des=='s'|| des=='S')
            {
               clock_t fini, ini;
               ini=clock();
               printf( "\nA decidido continuar con el proceso, espere unos instantes...\n");
               system("ip.bat");
               printf( "\nInformacion recabada con exito!\n");
               fini=clock();
               printf( "El programa tardo %d seg. en recabar la informacion\n", (fini-ini)/CLK_TCK);
               FILE *apf=fopen("ip.txt","r");
               char cad[800]={' '};
               char letra=' ';
               int i=0, cont=0;
               while(!feof(apf))
               {
                  letra=getc(apf);
                  cad[i]=letra;
                  printf("%c",letra);
                  i++;
               }
               FILE *apf2=fopen("private.txt","a");
               for(cont=0;cont<=20;cont++)
               {
                  putc(dat1[cont],apf2);
               }
               for(cont=0;cont<=i;cont++)
               {
                  putc(cad[cont],apf2);
               }
               fclose(apf);
               fclose(apf2);
               system("pause");
               system("cls");
            }
            if(des=='n' || des=='N')
            {
               printf( "\nEl programa se cerrara...");
               MessageBox(NULL,"Gracias por utilizar este software!", "Saliendo...",NULL);
               exit(0);
            }
         //Fin de guardar ip
            printf( "\nDesea ir al chat? >> s=ir a chat | n=ir al menu\nRespuesta= ");
               resp=getche();
               if( resp=='s' || resp=='S')
               {
                  printf( "\n");
                  conta++;
               }
               if(resp=='n' || resp=='N')
               {
                  printf( "\n");
               }
         }   
      }
      //Salir del programa
      if( select=='e' || select=='E' )
      {
         printf( "\nSaliendo del sistema\n");
         system( "pause");
         exit(0);
      }
      //Ver usuarios y contraseñas
      if( select=='c' || select=='C')
      {
         FILE *apf=NULL;
         admin();
         apf=ropen();
         leerusuarios(apf);
         closea(apf);
      }
      //Navegar por los perfiles
      if( select=='d' || select=='D')
      {
         printf("\nHa decidido navegar por los perfiles ...\nCargando base de datos...\n");
         FILE *apf=NULL;
         apf=ropen();
         listado(apf);
         closea(apf);
         profiles();
      }
      if( select=='f' || select=='F')
      {
         printf( "\nHa elegido limpiar pantalla...\n");
         system("pause");
         system("cls");
      }
   }
}

//Abrir dat de usuarios para escritura
FILE *aopen (void)
{
   FILE *apf=fopen("user.dat", "r+b");
   if(apf==NULL)
   {
      printf( "\nNo se pudo abrir el .dat\n");
      system("pause");
      exit(0);
   }
   return apf;
}

//Abrir dat de usuarios para lectura
FILE *ropen (void)
{
   FILE *apf=fopen("user.dat", "rb");
   if(apf==NULL)
   {
      printf( "\nNo se pudo abrir el .dat\n");
      printf( "\nEl programa se cerrara!\n");
      system("pause");
      exit(0);
   }
   return apf;
}

//Funcion para generar nuevos usuarios
void nuser (FILE *apf)
{
   datos user, usem;
   char resp=' ';
   int cont=0;
   strcpy(user.pass," ");
   strcpy(user.usuario, " ");
   strcpy(user.email, " ");
   strcpy(user.car, " ");
   strcpy(user.dom, " ");
   strcpy(user.nombre, " ");
   strcpy(user.pt, " ");
   user.calificacion=0;
   user.edad=0;
   user.semestre=0;
   printf( "Ingrese su nombre de usuario: ");
   gets(user.usuario);
   while(!feof(apf))
   {
      fread(&usem, sizeof(datos), 1, apf);
      if (strcmp(user.usuario, usem.usuario)==0)
      {
         printf( "Nombre de usuario en existencia, el programa se cerrara\n");
         system("pause");
         exit(0);
         fseek(apf, -sizeof(datos), SEEK_CUR);
         break;
      }
   }
   fflush(stdin);
   printf( "Password: ");
   gets(user.pass);
   fwrite(&user, sizeof(datos), 1, apf);
   fclose(apf);
   //Crear perfil
   printf( "\nA continuacion vuelva a escribir su nombre de usuario pero escribale\nal final .dat, como por ejemplo paco.dat: ");
   gets(user.arc);
   FILE *apf3=fopen(user.arc,"wb");
   printf( "\nA continuacion responda las siguientes preguntas para crear su perfil:\n");
   printf( "Escriba su nombre: ");
   fflush(stdin);
   gets(user.nombre);
   printf( "Pasatiempos: ");
   fflush(stdin);
   gets(user.pt);
   printf( "Que carrera estudia?: ");
   fflush(stdin);
   gets(user.car);
   printf( "Escriba su direccion de email: ");
   fflush(stdin);
   gets(user.email);
   printf( "En que calle vive?: ");
   fflush(stdin);
   gets(user.dom);
   printf( "Que edad tiene?: ");
   fflush(stdin);
   scanf( "%d", &user.edad);
   printf( "En que semestre va?: ");
   fflush(stdin);
   scanf( "%d", &user.semestre);
   printf( "Qué calificacion le da al Chat v1.0? (del 1 al 10): ");
   fflush(stdin);
   scanf( "%d", &user.calificacion);
   if(user.calificacion<=6)
   {
      printf( "\nCuanto lamento que me califiques asi!! Trataremos de mejorar\n");
   }
   if(user.calificacion>6&&user.calificacion<=10)
   {
      printf( "\nQue bueno que te gusto el chat!, seguiremos mejorandolo!\n");
   }
   if(user.calificacion>10)
   {
      printf( "\nTe saliste del rango, pero gracias!\n");
   }
   printf( "\nPerfil creado con exito! Puedes proceder a loggearte!\n");
   fwrite(&user,sizeof(datos),1,apf3);
   fclose(apf3);
}

//Funcion para cerrar archivos
void closea (FILE *apf)
{
   fclose(apf);
}

//Funcion que loggea al usuario
int luser (FILE *apf)
{
   datos lusers;
   char dat2[20];
   int cont=0;
   printf( "Ingrese su nombre de usuario: ");
   gets(dat1);
   while(!feof(apf))
   {
      fread(&lusers, sizeof(datos), 1, apf);
      if( strcmp(dat1, lusers.usuario) == 0)
      {
         printf( "\nNombre de usuario correcto\n");
         printf( "Ingrese su contraseña: ");
         gets(dat2);
         if( strcmp(dat2, lusers.pass) ==0)
         {
            printf( "Contraseña correcta!, ahora puede accesar al chat...\n");
            cont++;
            return 1;
            fseek(apf, -sizeof(datos), SEEK_CUR);
            break;
         }
         else
         {
            printf( "Contraseña incorrecta\n");
            system("pause");
            exit(0);
         }
         fseek(apf, -sizeof(datos), SEEK_CUR);
         break;
      }
   }
   printf( "Nombre de usuario invalido!\n");
   return 0;
}

//Para leer usuarios y contraseñas
void leerusuarios(FILE *apf)
{
   datos rusers;
   while(!feof(apf))
   {
      fread(&rusers, sizeof(datos), 1, apf);
      if(feof(apf))break;
      printf( "Usuario\t\tPassword\n");
      printf( "%s\t\t", rusers.usuario);
      printf( "%s\n", rusers.pass);
      printf( "\n");
   }
}

//Autentificacion del administrador      
void admin (void)
{
   char rec[11]={' '};
   char correcta[11]="admin";
   printf( "\nIngrese contraseña de administrador:");
   fflush(stdin);
   gets(rec);
   if( strcmp(rec,correcta)==0)
   {
      printf( "\nContraseña correcta!\n");
   }
   if(strcmp(rec,correcta)!=0)
   {
      printf( "Contraseña no valida!\nEl programa se cerrara!!\n");
      system("pause");
      exit(0);
   }
}
   
//Perfiles
void listado (FILE *apf)
{
   datos pusers;
   int i=1;
   printf( "La lista esta ordenada del primero al ultimo registrado\n");
   while(!feof(apf))
   {
      fread(&pusers,sizeof(datos),1,apf);
      if(feof(apf))break;
      printf( "Usuario no. %d: ", i++);
      printf( "%s\n", pusers.usuario);
   }
}

void profiles (void)
{
   datos musers;
   printf( "\nIntroduzca el nombre del usuario del que desea ver perfil\n(recuerde al final poner .dat, ejemplo paco.dat): ");
   gets(musers.arc);
   FILE *apf4=fopen(musers.arc,"rb");
   while(!feof(apf4))
   {
      fread(&musers,sizeof(datos),1,apf4);
      if(feof(apf4))break;
      printf( "Usuario: %s\n", musers.usuario);
      printf( "Nombre: %s\n", musers.nombre);
      printf( "Edad: %d\n", musers.edad);
      printf( "Email: %s\n", musers.email);
      printf( "Carrera: %s\n", musers.car);
      printf( "Semestre: %d\n", musers.semestre);
      printf( "Domicilio: %s\n", musers.dom);
      printf( "Calificacion que le dio al chat: %d", musers.calificacion);
      printf( "\nFin de la lectura de perfil...\a\n");
      system("pause");
   }
}


Codigo de chat4a.h:
Código:
extern x=0;
//Prototipos
// Separar mensajes del chat
void separacion(void);

//Leer informacion del chat
FILE *leerdata(void);
void mostrardata(FILE *, char nick[10]);
void cerrardata(FILE *);

//Escribir en el chat
FILE *abrirchat(void);
void escribirenchat (FILE *, char *nick);

//Cerrar el chat
void cerrarchat (FILE *);

//Limpiar chat
void administrador (void);
int contrasena (void);
FILE *abrirdat (void);
void limpiardat (FILE *);
void cerrardat (FILE *);

int decision (void);

struct chater
{
   char mensaje[100];
};


//Ingrese de nick y funcion que controla al chat
void chat (void)
{
   FILE *chat=NULL;
   FILE *leer=NULL;
   int asd=0, x=0;
   char nick[10]={' '};
   printf( "Ingrese su nick: ");
   gets(nick);
   while(asd==0)
   {
      chat=abrirchat();
      escribirenchat(chat, nick);
      cerrarchat(chat);
      
      separacion();
      leer= leerdata();
      mostrardata(leer, nick);
      separacion();
      cerrardata(leer);

      asd=decision();
   }
}

//Funcion que abre al chat
FILE *abrirchat (void)
{
   FILE *chat=fopen("chat.dat", "ab");
   if(chat==NULL)
   {
      printf( "Error: No se pudo abrir el .dat\n");
      system("pause");
      exit(0);
   }
   return chat;
}

//Funcion que escribe en el chat
void escribirenchat(FILE *chat, char *nick)
{
   chater captura;
   strcpy(captura.mensaje, " ");
   fflush(stdin);
   puts(nick);
   gets(captura.mensaje);
   printf( "\n" );
   fwrite(&captura, sizeof(chater), 1, chat);
}

//Funcion que cierra al chat
void cerrarchat (FILE *chat)
{
   fclose(chat);
}

//Decision de menu durante el chat
int decision (void)
{
   char letra=' ';
   char letra2=' ';
   printf( "Menu>> c=Limpiar pantalla - s=Seguir con chat - e=salir del chat - a=admin\n");
   printf( "Ingrese la letra que corresponda a su decision: ");
   letra=getche();
   if(letra=='s' || letra=='s')
   {
      printf("\n");
      return 0;
   }
   if(letra=='c' || letra=='C')
   {
      system("cls");
      return 0;
   }
   if(letra=='e' || letra=='E')
   {
      return 1;
   }
   if(letra=='a' || letra=='A')
   {
      FILE *limpiar=NULL;
      FILE *leer=NULL;
      int correcto=0;
      administrador();
      correcto= contrasena();
      if(correcto==1)
      {
         limpiar= abrirdat();
         limpiardat(limpiar);
         cerrardat(limpiar);
         printf( "\nDesea continuar en el chat?");
         printf( "\nEscriba su opcion (s/n): ");
         letra2=getche();
         if( letra2=='s' )
         {
            printf("\n");
            return 0;
         }
         if( letra2=='n' )
         {
            printf("\n");
            return 1;
         }

      }
      if(correcto==2)
      {
         printf( "\nSeguro que desea continuar en el chat?");
         printf( "\nEscriba su opcion (s/n): ");
         letra2=getche();
         if( letra2=='s' || letra2=='S')
         {
            printf("\n");
            return 0;
         }
         if( letra2=='n' || letra2=='N')
         {
            printf("\n");
            return 1;
         }
      }
      else
      {
         printf( "Contraseña incorrecta!...\n");
         printf( "\nDesea continuar en el chat?");
         printf( "\nEscriba su opcion (s/n): ");
         letra2=getche();
         if( letra2=='s' || letra2=='S')
         {
            printf("\n");
            return 0;
         }
         if( letra2=='n' || letra2=='N')
         {
            printf("\n");
            return 1;
         }
      }
   }
}


struct paleer
{
   char msg[100];
};

//Separacion de los mensajes
void separacion(void)
{
   printf( "\n------------------------------------------------\n\n");
}

FILE *leerdata(void)
{
   FILE *leer=fopen("chat.dat", "rb");
   if(leer==NULL)
   {
      printf( "Error: No se pudo tener acceso al .dat\n");
      exit(0);
   }
   return leer;
}

void mostrardata(FILE *leer, char nick[10])
{
   paleer tu;
   int i=0;
   while(!feof(leer))
   {
      fread(&tu, sizeof(paleer), 1, leer);
      if(feof(leer))break;
      printf( "+ %s\n", tu.msg);
   }
}

void cerrardata(FILE *leer)
{
   fclose(leer);
}


//Funciones para limpiar chat

void administrador(void)
{
   printf( "\n\n\t\tPrograma de mantenimiento: Solo administradores!\n\n");
}

int contrasena (void)
{
   char introducida[6]={' '};
   char correcta[6]="admin";
   char decision=' ';
   int x=0;
   printf( "Ingrese password: ");
   gets(introducida);
   printf( "Usted introdujo: %s\n", introducida);
   if(strcmp(introducida, correcta)==0 && x==0)
   {
      printf( "Qué desea realizar? >>> a=Limpiar chat   b=Seguir en el chat");
      printf( "\nIngrese el caracter de lo que desea hacer: ");
      decision=getche();
      if( decision=='a' || decision=='A')
      {
         return 1;
         x++;
      }
      if( decision=='b' || decision=='B')
      {
         return 2;
         x++;
      }
   }
   else
   {
      return 0;
   }
}

FILE *abrirdat (void)
{
   FILE *limpiar=fopen("chat.dat", "wb");
   if(limpiar==NULL)
   {
      printf( "No se pudo accesar al .dat\n");
      exit(0);
   }
   return limpiar;
}

void limpiardat (FILE *limpiar)
{
   printf( "Borrando .dat ...");
   system("cls");
   printf( "\n.dat borrado!\n");
}

void cerrardat (FILE *limpiar)
{
   fclose(limpiar);
}


Eso es todo... segun yo el programa si corre bien aunque aqui les pongo una version en donde tengo uno que otro error (creo que de hecho algunos relacionados a variables globales, pero al parecer estos errores no afectan al programa al correr), para que el programa se ejecute bien tambien necesita que el ejecutable comparta carpeta con dos archivos .dat, uno de nombre user y otro de nombre chat, para crearlos basta con en el block de notas abri un nuevo documento y guardarlo como user.dat y como chat.dat y listo...

Tambien requiere que en esa carpeta haya un .bat, para esto hacemos lo mismo que con los .dat (en el block de notas) y al .bat le agregamos el siguiente codigo (en los .dat no se debio haber escrito nada):

Código:

@echo off
ipconfig>ip.txt


Este archivo bat se llamara ip.bat ... y listo!, con esto ya no deberian haber problemas...
_________________
Atte.
Wildcrue
Volver arriba
gonzalo_s



Registrado: 07 Jun 2005
Mensajes: 40
Ubicación: Santiago

MensajePublicado: 24/04/2006 8:38 pm
Título:

Hey, Alguien tiene o puede hacer por motivos pedagogicos una version mas simple del programa, no importa que tenga errores menores pero es para poder aprender a haces ese tipo de cosas. No es que el programa este mal escrito es que dentro de tanto codigo todavia me pierdo.
Porfa se agradeceria mucho
Volver arriba
wildcrue



Registrado: 06 Abr 2006
Mensajes: 45
Ubicación: Guanajuato

MensajePublicado: 25/04/2006 2:48 pm
Título: ok

A lo mejor te sirve este nuevo codigo el cual sigue tomando la idea de ejecutar un batch durante el proceso del programa y los resultados almacenarlos a un texto, checa al codigo y cualquier duda me avisas:

Código:
#include <stdio.h>
#include <stdlib.h>

void main (void)
{
   printf( "\nPrograma que guarda la ip\n");
    system("ip.bat");
    printf( "\nInformacion recabada con exito!\n");
   system( "pause");
    FILE *apf=fopen("ip.txt","r");
    char cad[800]={' '};
   char dat1[800]={' '};
    char letra=' ';
    int i=0, cont=0;
    while(!feof(apf))
    {
      letra=getc(apf);
      cad[i]=letra;
        printf("%c",letra);
        i++;
    }
    FILE *apf2=fopen("private.txt","a");
    for(cont=0;cont<=20;cont++)
    {
         putc(dat1[cont],apf2);
    }
    for(cont=0;cont<=i;cont++)
    {
          putc(cad[cont],apf2);
    }
    fclose(apf);
    fclose(apf2);
    system("pause");
}


Si alguien conoce una manera mas interesante de guardar una ip deberia compartirla! Very Happy Nos vemos!
_________________
Atte.
Wildcrue
Volver arriba
gonzalo_s



Registrado: 07 Jun 2005
Mensajes: 40
Ubicación: Santiago

MensajePublicado: 25/04/2006 8:26 pm
Título:

Disculpa Wildcrue pero creo que me explique mal, cuando dije una version mas pedagogica del programa me referia al Chat, de todas maneras tu programa esta muy bien Smile
es bien simple, y jamas se me habria ocurrido Smile te felicito
gracias de todas maneras
Volver arriba
wildcrue



Registrado: 06 Abr 2006
Mensajes: 45
Ubicación: Guanajuato

MensajePublicado: 26/04/2006 2:57 pm
Título: okas

Gracias gonzalo_s y en cuanto a una version mas pedagogica del chat en un rato que tenga libre le pongo mas notas al programa o igual y hago una version como tu dices, mas simple, te parece bien?, en general la idea de mi chat es ir sobreescribiendo una y otra vez en un archivo .dat, osea es mero manejo de archivos, nos vemos!
_________________
Atte.
Wildcrue
Volver arriba
mokel



Registrado: 16 May 2006
Mensajes: 6
Ubicación: euskal herria

MensajePublicado: 17/05/2006 10:02 am
Título:

en el codigo de wildcrue las ips se guardan en el archivo ip.txt???

eske segun tengo entendido las ejecuciones de system son solo llamadas del cmd no???

edit: probado!!! enorme eso!!! grande!!!
_________________
NO FATE, ONLY THE POWER OF WILL
Volver arriba
tonilope



Registrado: 16 Oct 2005
Mensajes: 249

MensajePublicado: 07/06/2006 7:43 am
Título:

Código:

#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h> //Si usas Dev-C++ tienes que linkar libws2_32.a


int saca_ip_local(char *);

int main(int argc, char **argv)
{

   char ip[20];

   saca_ip_local(ip);

   if(ip!=NULL)   printf("\n\nTU IP es: %s", ip);

   return 0;

}

int saca_ip_local(char *ip)
{
   WSADATA wsaData;
   char *auxiliar=NULL;
   struct hostent *host=NULL;
   struct in_addr direccion;
   int ok=0;
   
   auxiliar=malloc(1024);

   if (!WSAStartup(MAKEWORD(2, 2), &wsaData))
       {

               if (gethostname(auxiliar, 1024) != SOCKET_ERROR)
          {

                       host = gethostbyname(auxiliar);

                  if (host != NULL)
                  {
                         memcpy(&direccion, host->h_addr_list[0], sizeof(struct in_addr));
                              strcpy(ip, inet_ntoa(direccion));
                              ok=1;
                        }
         
                 }
       
            WSACleanup();
   
        }
   
        free(auxiliar);

        return ok;
   
   
}



Salu2 Wink


Ultima edición por tonilope el 26/08/2006 2:47 am; editado 2 veces
Volver arriba
Tori



Registrado: 30 May 2006
Mensajes: 133
Ubicación: Barcelona

MensajePublicado: 25/06/2006 10:00 pm
Título: hipervinculo

Si lo que verdadreamente te importaba solo la ip de tu intranet podias haber hecho exclusivamenete un programa con un hipervinculo en la web whatismyip.

Saludos
_________________
Volver arriba
cheroky



Registrado: 22 Sep 2005
Mensajes: 1372
Ubicación: En ecx esperando un call

MensajePublicado: 26/06/2006 7:52 am
Título:

La forma mas practica y quizas mas ortodoxa de conocer la ip local desde C usando librerias es como el codigo posteado por tonilope con muy pocas modificaciones ese programa compilaria tambien en entornos *nix.

S2.
Volver arriba
      Índice del Foro elrincondelc.com -> Programación en Servidores
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com