Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Saber La Ip De Un Cliente

Iniciado por vincent, 10 de Junio de 2005, 09:32:59 AM

« anterior - próximo »

vincent

 Muy buenas,

tengo un equipo con Windows XP que acepta llamadas entrantes a través de un modem. Para poder establecer un socket con el equipo que realiza la llamada entrante necesito saber su IP (cada cliente especifica la suya).

Existe alguna función de la winapi para saber esta dirección? Tiene que existir pq si miras las propiedades de la conexión te dice la ip del cliente, pero no he sido capaz de encontrarla.  (nooo)

Gracias!
Desarrollo en .Net y metodologías http://devnettips.blogspot.com

vincent

 Bueno, ahora mi problema ha cambiado. Lo que necesito ahora es detectar cuando un equipo está llamando a mi modem...  :(

Merci!
Desarrollo en .Net y metodologías http://devnettips.blogspot.com

senior wapo

 Mirate la API SNMP de windows, creo recordar que permitia interrogar y cambiar esas cosas. Que no te asuste el nombre, no tienes que tener funcionando los servicios de red SNMP, es su equivalente pero para local en lugar de remoto (soporta ambos).

Juan Mellado

 Si estás utilizando RAS, puedes crearte una DLL que exporte una serie de funciones predefinadas por el API de RAS, registrarla en el registro (valga la redundancia), y esperar que Windows la llame cada vez que ocurra un evento relacionado con RAS.

Para detectar llamadas entrantes creo que debería ser RasAdminAcceptNewConnection:
http://msdn.microsoft.com/library/default....wconnection.asp

Toda la documentación está en MSDN, en RAS Administration DLL:
http://msdn.microsoft.com/library/default....inistration.asp

Espero te sirva,
Saludos

vincent

 Gracias Juan,

ahora lo pruebo y a ver que tal..

Merci!
Desarrollo en .Net y metodologías http://devnettips.blogspot.com

vincent

 Bueno, ya he probado esto....

Mirando la msdn he visto lo siguiente:

Windows 2000 Server and later:  RAS administration DLLs that implement this function interface no longer work. Instead, use the MprAdmin function interface provided with the more recent versions of Windows. For more information, see the RAS Administration Reference in the Routing and RAS documentation.

Con lo qual he hecho la dll con las funciones del MprAdmin... he acertado?

La Dll que he hecho, es muy sencilla, simplemente hace printfs. Aqui pasteo el código:

#include "ModemCalls.h"

#include <stdio.h>

BOOL CALLBACK MprAdminAcceptNewLink(
 RAS_PORT_0* pRasPort0,
 RAS_PORT_1* pRasPort1
)
{
printf("\n\n\n\n ACCEPT NEW LINK \n\n\n\n");
return TRUE;
}

DWORD APIENTRY MprAdminInitializeDll(void)
{
return NO_ERROR;
}

void CALLBACK MprAdminLinkHangupNotification(
 RAS_PORT_0* pRasPort0,
 RAS_PORT_1* pRasPort1
)
{
printf("\n\n\n\n LINK HANG UP NOTIFICATION \n\n\n\n");
}

DWORD APIENTRY MprAdminTerminateDll(void)
{
return NO_ERROR;
}

BOOL CALLBACK MprAdminAcceptNewConnection(
 RAS_CONNECTION_0* pRasConnection0,
 RAS_CONNECTION_1* pRasConnection1
)
{
printf("\n\n\n\n ACCEPT NEW CONNECTION \n\n\n\n");
return TRUE;
}

void CALLBACK MprAdminConnectionHangupNotification(
 RAS_CONNECTION_0* pRasConnection0,
 RAS_CONNECTION_1* pRasConnection1
)
{
printf("\n\n\n\n CONNECTION HANG UP\n\n\n\n");
}


DWORD CALLBACK MprAdminGetIpAddressForUser(
 WCHAR* lpwszUserName,
 WCHAR* lpwszPortName,
 DWORD* lpdwIpAddress,
 BOOL* bNotifyRelease
)
{
printf("\n\n\n\n GET IP ADDRESS\n\n\n\n");
return NO_ERROR;
}

void CALLBACK MprAdminReleaseIpAddress(
 WCHAR* lpwszUserName,
 WCHAR* lpwszPortName,
 DWORD* lpdwIpAddress
)
{
printf("\n\n\n\n RELEASE IP ADDRESS\n\n\n\n");
}


Al iniciar el servicio no me da ningun error, con lo que supongo que la dll está bien hecha...

Total, que pongo a correr un programa que no hace nada para ver si sale algo en pantalla... y no sale nada cuando el cliente se intenta conectar :(

alguna idea sobre que puede estar pasando o yo haciendo mal? ( que lo mas probable... )

Merci!
Desarrollo en .Net y metodologías http://devnettips.blogspot.com

vincent

 Bueno, pues los printfs no sé pq no funcionan, pero la DLL si!!  (ole)

Gracias!!
Desarrollo en .Net y metodologías http://devnettips.blogspot.com






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.