Página 1 de 1

Ver la IP de una PC

Publicado: Dom Jun 11, 2006 11:43 pm
por Roque Lopez
Alguien sabe de alguna funcion en xailer que permita ver la IP de una PC?
Gracias
Saludos
Roque

Ver la IP de una PC

Publicado: Lun Jun 12, 2006 3:06 pm
por Yamil Bracho
Pudieras usar el Win32API(wsock32.dll) ya que hasta donde se, Xailer no
tiene una clase para sockets (seria bueno agregarla)
Y ya que estoy aqui y revisando la documentacion hace falta documentar los
constructores por clase.
"Roque Lopez" <roque_lopez@terra.es> wrote in message
news:[email=448c8d16@ozsrvnegro.ozlan.local...]448c8d16@ozsrvnegro.ozlan.local...[/email]
> Alguien sabe de alguna funcion en xailer que permita ver la IP de una PC?
>
> Gracias
>
> Saludos
>
> Roque
>
>

Ver la IP de una PC

Publicado: Lun Jun 12, 2006 4:49 pm
por ignacio
Roque,
El propio xHarbour tiene soporte de sockets. Le sugiero que haga la pregunta
en dicho foro.
Un saludo,
"Yamil Bracho" <YamilBracho@hotmail.com> escribió en el mensaje
news:448d6797$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Pudieras usar el Win32API(wsock32.dll) ya que hasta donde se, Xailer no
> tiene una clase para sockets (seria bueno agregarla)
> Y ya que estoy aqui y revisando la documentacion hace falta documentar los
> constructores por clase.
>
> "Roque Lopez" <roque_lopez@terra.es> wrote in message
> news:[email=448c8d16@ozsrvnegro.ozlan.local...]448c8d16@ozsrvnegro.ozlan.local...[/email]
>> Alguien sabe de alguna funcion en xailer que permita ver la IP de una PC?
>>
>> Gracias
>>
>> Saludos
>>
>> Roque
>>
>>
>
>

Ver la IP de una PC

Publicado: Lun Jun 12, 2006 5:44 pm
por Bingen Ugaldebere
Mete este churro C en un PRG cualquiera y le llamas como si fuera una
simple función cIP:=GetLocalIP()
//---------------------------------------------------------- --------------------
#pragma BEGINDUMP
#include "windows.h"
#include "xailer.h"
#include "winsock2.h"
XA_FUNC( GETLOCALIP )
{
WSADATA wsa;
char cHost[256];
struct hostent *h;
int nAddr = 0, n = 0;
WSAStartup( MAKEWORD( 2, 0 ), &wsa );
if( gethostname( cHost, 256 ) == 0 )
if( h = gethostbyname( cHost ) )
while( h->h_addr_list[nAddr] )
nAddr++;
hb_reta( nAddr );
if( nAddr )
while( h->h_addr_list[n] )
{
char cAddr[256];
wsprintf( cAddr, "%d.%d.%d.%d", (BYTE) h->h_addr_list[n][0],
(BYTE) h->h_addr_list[n][1],
(BYTE) h->h_addr_list[n][2],
(BYTE) h->h_addr_list[n][3] );
hb_storc( cAddr, -1, ++n );
}
WSACleanup();
}
#pragma ENDDUMP

Ver la IP de una PC

Publicado: Lun Jun 12, 2006 10:41 pm
por Xevi
Bingen...
Lo he incluido en mi fichero de Wrappers...
Compilant Wrappers.prg...
Warning W8060 Wrappers.prg 142: Possibly incorrect assignment in function HB_FUN_GETLOCALIP
Enllaçant GWin.exe...
1 Warnings, 0 Errors
La lí­nea en cuestión es esa...
if( h = gethostbyname( cHost ) )
¿Y eso???
¿Un posible error???
Ahora... eso si, funciona !!!
Gracias.
Un Saludo,
Xevi.
"bingen" <bingen@muninser.com> ha escrit al missatge del grup de discussió: [email=448d8c03@ozsrvnegro.ozlan.local...]448d8c03@ozsrvnegro.ozlan.local...[/email]
> Mete este churro C en un PRG cualquiera y le llamas como si fuera una
> simple función cIP:=GetLocalIP()
>
> //---------------------------------------------------------- --------------------
>
> #pragma BEGINDUMP
>
> #include "windows.h"
> #include "xailer.h"
> #include "winsock2.h"
>
> XA_FUNC( GETLOCALIP )
> {
> WSADATA wsa;
> char cHost[256];
> struct hostent *h;
> int nAddr = 0, n = 0;
>
> WSAStartup( MAKEWORD( 2, 0 ), &wsa );
>
> if( gethostname( cHost, 256 ) == 0 )
> if( h = gethostbyname( cHost ) )
> while( h->h_addr_list[nAddr] )
> nAddr++;
>
> hb_reta( nAddr );
>
> if( nAddr )
> while( h->h_addr_list[n] )
> {
> char cAddr[256];
> wsprintf( cAddr, "%d.%d.%d.%d", (BYTE) h->h_addr_list[n][0],
> (BYTE) h->h_addr_list[n][1],
> (BYTE) h->h_addr_list[n][2],
> (BYTE) h->h_addr_list[n][3] );
> hb_storc( cAddr, -1, ++n );
> }
>
> WSACleanup();
>
> }
>
> #pragma ENDDUMP
>
--

Ver la IP de una PC

Publicado: Mar Jun 13, 2006 12:46 am
por Manu
Tal vez sea por el tipo de dato, aunque similar no es igual declara una
variable como un array que como un puntero, la diferencia es que a un
array no le puedes asignar un valor directamente y pero aun un putero si
y posiblemente la función lo que haga sea eso ;-) fí­jate a ver si así­
pirula sin la advertencia:
#pragma BEGINDUMP
#include "windows.h"
#include "xailer.h"
#include "winsock2.h"
XA_FUNC( GETLOCALIP )
{
WSADATA wsa;
// char cHost[256]; // <---- quita esta y pon la de abajo
char *cHost = (char *) hb_xgrab( 256 );
struct hostent *h;
int nAddr = 0, n = 0;
WSAStartup( MAKEWORD( 2, 0 ), &wsa );
if( gethostname( cHost, 256 ) == 0 )
if( h = gethostbyname( cHost ) )
while( h->h_addr_list[nAddr] )
nAddr++;
hb_reta( nAddr );
if( nAddr )
while( h->h_addr_list[n] )
{
char cAddr[256];
wsprintf( cAddr, "%d.%d.%d.%d", (BYTE) h->h_addr_list[n][0],
(BYTE) h->h_addr_list[n][1],
(BYTE) h->h_addr_list[n][2],
(BYTE) h->h_addr_list[n][3] );
hb_storc( cAddr, -1, ++n );
}
WSACleanup();
hb_xfree( cHost ); // Esta libera la memoria
}
#pragma ENDDUMP

Ver la IP de una PC

Publicado: Mar Jun 13, 2006 12:49 am
por Pedro Gil
Xevi,
Puedes eliminar el Warning así­:
if( gethostname( cHost, 256 ) == 0 )
{
h = gethostbyname( cHost );
if( h )
while( h->h_addr_list[ nAddr ] )
nAddr++;
}
Saludos,
Pedro Gil
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=448dd161@ozsrvnegro.ozlan.local...]448dd161@ozsrvnegro.ozlan.local...[/email]
Bingen...
Lo he incluido en mi fichero de Wrappers...
Compilant Wrappers.prg...
Warning W8060 Wrappers.prg 142: Possibly incorrect assignment in function HB_FUN_GETLOCALIP
Enllaçant GWin.exe...
1 Warnings, 0 Errors
La lí­nea en cuestión es esa...
if( h = gethostbyname( cHost ) )
¿Y eso???
¿Un posible error???
Ahora... eso si, funciona !!!
Gracias.
Un Saludo,
Xevi.
"bingen" <bingen@muninser.com> ha escrit al missatge del grup de discussió: [email=448d8c03@ozsrvnegro.ozlan.local...]448d8c03@ozsrvnegro.ozlan.local...[/email]
> Mete este churro C en un PRG cualquiera y le llamas como si fuera una
> simple función cIP:=GetLocalIP()
>
> //---------------------------------------------------------- --------------------
>
> #pragma BEGINDUMP
>
> #include "windows.h"
> #include "xailer.h"
> #include "winsock2.h"
>
> XA_FUNC( GETLOCALIP )
> {
> WSADATA wsa;
> char cHost[256];
> struct hostent *h;
> int nAddr = 0, n = 0;
>
> WSAStartup( MAKEWORD( 2, 0 ), &wsa );
>
> if( gethostname( cHost, 256 ) == 0 )
> if( h = gethostbyname( cHost ) )
> while( h->h_addr_list[nAddr] )
> nAddr++;
>
> hb_reta( nAddr );
>
> if( nAddr )
> while( h->h_addr_list[n] )
> {
> char cAddr[256];
> wsprintf( cAddr, "%d.%d.%d.%d", (BYTE) h->h_addr_list[n][0],
> (BYTE) h->h_addr_list[n][1],
> (BYTE) h->h_addr_list[n][2],
> (BYTE) h->h_addr_list[n][3] );
> hb_storc( cAddr, -1, ++n );
> }
>
> WSACleanup();
>
> }
>
> #pragma ENDDUMP
>
--

Ver la IP de una PC

Publicado: Mar Jun 13, 2006 8:21 am
por Xevi
Pedro...
Arreglado el Warning!!!
Gracias.
Un Saludo,
Xevi.
"Pedro Gil" <pedrojose.gil@wanadoo.es> escribió en el mensaje news:[email=448def70@ozsrvnegro.ozlan.local...]448def70@ozsrvnegro.ozlan.local...[/email]
Xevi,
Puedes eliminar el Warning así­:
if( gethostname( cHost, 256 ) == 0 )
{
h = gethostbyname( cHost );
if( h )
while( h->h_addr_list[ nAddr ] )
nAddr++;
}
Saludos,
Pedro Gil
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=448dd161@ozsrvnegro.ozlan.local...]448dd161@ozsrvnegro.ozlan.local...[/email]
Bingen...
Lo he incluido en mi fichero de Wrappers...
Compilant Wrappers.prg...
Warning W8060 Wrappers.prg 142: Possibly incorrect assignment in function HB_FUN_GETLOCALIP
Enllaçant GWin.exe...
1 Warnings, 0 Errors
La lí­nea en cuestión es esa...
if( h = gethostbyname( cHost ) )
¿Y eso???
¿Un posible error???
Ahora... eso si, funciona !!!
Gracias.
Un Saludo,
Xevi.
"bingen" <bingen@muninser.com> ha escrit al missatge del grup de discussió: [email=448d8c03@ozsrvnegro.ozlan.local...]448d8c03@ozsrvnegro.ozlan.local...[/email]
> Mete este churro C en un PRG cualquiera y le llamas como si fuera una
> simple función cIP:=GetLocalIP()
>
> //---------------------------------------------------------- --------------------
>
> #pragma BEGINDUMP
>
> #include "windows.h"
> #include "xailer.h"
> #include "winsock2.h"
>
> XA_FUNC( GETLOCALIP )
> {
> WSADATA wsa;
> char cHost[256];
> struct hostent *h;
> int nAddr = 0, n = 0;
>
> WSAStartup( MAKEWORD( 2, 0 ), &wsa );
>
> if( gethostname( cHost, 256 ) == 0 )
> if( h = gethostbyname( cHost ) )
> while( h->h_addr_list[nAddr] )
> nAddr++;
>
> hb_reta( nAddr );
>
> if( nAddr )
> while( h->h_addr_list[n] )
> {
> char cAddr[256];
> wsprintf( cAddr, "%d.%d.%d.%d", (BYTE) h->h_addr_list[n][0],
> (BYTE) h->h_addr_list[n][1],
> (BYTE) h->h_addr_list[n][2],
> (BYTE) h->h_addr_list[n][3] );
> hb_storc( cAddr, -1, ++n );
> }
>
> WSACleanup();
>
> }
>
> #pragma ENDDUMP
>
--

Ver la IP de una PC

Publicado: Mar Jun 13, 2006 8:22 am
por Xevi
Manu,
No me ha funcionado... lo he hecho como me ha indicado Pedro... y ya furula
sin el Warning!!!
Gracias.
Un Saludo,
Xevi.
"Manu Exposito" <manuexposito@terra.es> escribió en el mensaje
news:[email=448deec6@ozsrvnegro.ozlan.local...]448deec6@ozsrvnegro.ozlan.local...[/email]
> Tal vez sea por el tipo de dato, aunque similar no es igual declara una
> variable como un array que como un puntero, la diferencia es que a un
> array no le puedes asignar un valor directamente y pero aun un putero si y
> posiblemente la función lo que haga sea eso ;-) fíjate a ver si así pirula
> sin la advertencia:
>
> #pragma BEGINDUMP
>
> #include "windows.h"
> #include "xailer.h"
> #include "winsock2.h"
>
> XA_FUNC( GETLOCALIP )
> {
> WSADATA wsa;
> // char cHost[256]; // <---- quita esta y pon la de abajo
> char *cHost = (char *) hb_xgrab( 256 );
> struct hostent *h;
> int nAddr = 0, n = 0;
>
> WSAStartup( MAKEWORD( 2, 0 ), &wsa );
>
> if( gethostname( cHost, 256 ) == 0 )
> if( h = gethostbyname( cHost ) )
> while( h->h_addr_list[nAddr] )
> nAddr++;
>
> hb_reta( nAddr );
>
> if( nAddr )
> while( h->h_addr_list[n] )
> {
> char cAddr[256];
> wsprintf( cAddr, "%d.%d.%d.%d", (BYTE) h->h_addr_list[n][0],
> (BYTE) h->h_addr_list[n][1],
> (BYTE) h->h_addr_list[n][2],
> (BYTE) h->h_addr_list[n][3] );
> hb_storc( cAddr, -1, ++n );
> }
>
> WSACleanup();
> hb_xfree( cHost ); // Esta libera la memoria
> }
>
> #pragma ENDDUMP

Ver la IP de una PC

Publicado: Mar Jun 13, 2006 10:43 am
por jfgimenez
Xevi,
La lí­nea en cuestión es esa...
if( h = gethostbyname( cHost ) )
¿Y eso???
¿Un posible error???
No es un error, sino un warning (advertencia). En C, el operador = es para asignar valores a variables, y para comparar se usa el signo == (dos caracteres). Lo que está advirtiendo el compilador es que en un if( ) estás haciendo una asignación en vez de una comparación, y que le parece sospechoso.
En este caso, el código es correcto. Lo que se pretende es hacer esa asignación, y el if( ) lo que tiene que comprobar es si ese valor es distinto de NULL ó 0 (que se evalúa de forma implí­cita). Hay dos formas de evitar el warning: la primera es la que te ha dicho Pedro, y la segunda es meter la asignación entre paréntesis y hacer una comparación fuera de ellos. Entonces, la lí­nea quedarí­a así­:
if( ( h = gethostbyname( cHost ) ) != NULL )
--
Un saludo,
José F. Giménez
http://www.xailer.com
--

Ver la IP de una PC

Publicado: Mar Jun 13, 2006 11:49 am
por Xevi
OK.
Entendido.
Gracias.
Un Saludo,
Xevi
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje news:[email=448e7ad4@ozsrvnegro.ozlan.local...]448e7ad4@ozsrvnegro.ozlan.local...[/email]
Xevi,
La lí­nea en cuestión es esa...
if( h = gethostbyname( cHost ) )
¿Y eso???
¿Un posible error???
No es un error, sino un warning (advertencia). En C, el operador = es para asignar valores a variables, y para comparar se usa el signo == (dos caracteres). Lo que está advirtiendo el compilador es que en un if( ) estás haciendo una asignación en vez de una comparación, y que le parece sospechoso.
En este caso, el código es correcto. Lo que se pretende es hacer esa asignación, y el if( ) lo que tiene que comprobar es si ese valor es distinto de NULL ó 0 (que se evalúa de forma implí­cita). Hay dos formas de evitar el warning: la primera es la que te ha dicho Pedro, y la segunda es meter la asignación entre paréntesis y hacer una comparación fuera de ellos. Entonces, la lí­nea quedarí­a así­:
if( ( h = gethostbyname( cHost ) ) != NULL )
--
Un saludo,
José F. Giménez
http://www.xailer.com
--

Ver la IP de una PC

Publicado: Mié Jun 14, 2006 5:55 am
por zeasoftware
Me marca este error
"IP" + GetLocalIP()
_____________________________________
Subsistema: BASE
Código de error: 1081
Estado: .F.
Descripción: Argument error
Operación: +
Argumentos: [ 1] = Tipo: C Valor: IP: [ 2] = Tipo: A Valor:
Fichero:
Código error SO: 0
-------------------------------------------------
Saludos.
--
Ramón Zea
ramonzea@yahoo.com
http://www.paginasprodigy.com/zeasoft/
--

Ver la IP de una PC

Publicado: Mié Jun 14, 2006 8:06 am
por zeasoftware
tengo que usar "IP" + GetLocalIP()[1]
--
Ramón Zea
ramonzea@yahoo.com
http://www.paginasprodigy.com/zeasoft/
--