Sockets

18/01/2006 - 12:27 por luis | Informe spam
Somos un grupo de alumnos de Administración de Sistemas.
Nuestro profesor nos tiene locos con el tema de sockets.
Alguien podría decirnos como podemos conocer la IP del cliente que trata de
comunicar con un TCPListener.
Con un Socket genérico es muy fácil, pero con este no tenemos propiedades
que lo indiquen.

Salu2 ASI2 Carballeira Ourense

Preguntas similare

Leer las respuestas

#1 Angel J. Hernández M.
19/01/2006 - 20:27 | Informe spam
Hola Luís, qué tal? Lo que deseas hacer lo puedes conseguir de la siguiente
manera. Si estás utilizando un TcpListener debes invocar el método
AcceptSocket (te devuelve un socket y puedes acceder a sus propiedades) o
AcceptTcpClient (que te regresa un TcpClient), en caso que sea el segundo
sería algo así...

TcpListener listener;
listener = new TcpListener(direccion, puerto);
listener.Start();


while (true) {
TcpClient cliente = listener.AcceptTcpClient();

// Utilizas Reflection para obtener el socket subyacente (así puedes
obtener la dirección remota)
object miembro= ((FieldInfo) (((MemberInfo[])
cliente.GetType().GetMember("m_ClientSocket", MemberTypes.All,
BindingFlags.NonPublic | BindingFlags.Instance
| BindingFlags.GetField))[0])).GetValue(cliente) ;

Console.WriteLine("La dirección IP del cliente es {0}", ((Socket)
miembro).RemoteEndPoint.ToString());
}


Espero sea de utilidad,

Saludos,


Angel J. Hernández M.
MCP - MCAD - MCSD - MCDBA
Microsoft MVP ASP/ASP.NET
http://groups.msn.com/desarrolladoresmiranda
http://www.consein.com



"luis" wrote in message
news:
Somos un grupo de alumnos de Administración de Sistemas.
Nuestro profesor nos tiene locos con el tema de sockets.
Alguien podría decirnos como podemos conocer la IP del cliente que trata
de comunicar con un TCPListener.
Con un Socket genérico es muy fácil, pero con este no tenemos propiedades
que lo indiquen.

Salu2 ASI2 Carballeira Ourense

Respuesta Responder a este mensaje
#2 luis
23/01/2006 - 08:59 | Informe spam
Sorprendente esto de la reflexión, pero funciona.

Yo estaba pensando en extender la clase TcpClient para acceder a la
información del socket (Su dirección IP) subyaccente y hacerlo publico a
través de un Get, que no se por que demonios tiene que estar protegido.

Gracias.

Salu2 Luis

"Angel J. Hernández M." escribió en el mensaje
news:
Hola Luís, qué tal? Lo que deseas hacer lo puedes conseguir de la
siguiente manera. Si estás utilizando un TcpListener debes invocar el
método AcceptSocket (te devuelve un socket y puedes acceder a sus
propiedades) o AcceptTcpClient (que te regresa un TcpClient), en caso que
sea el segundo sería algo así...

TcpListener listener;
listener = new TcpListener(direccion, puerto);
listener.Start();


while (true) {
TcpClient cliente = listener.AcceptTcpClient();

// Utilizas Reflection para obtener el socket subyacente (así puedes
obtener la dirección remota)
object miembro= ((FieldInfo) (((MemberInfo[])
cliente.GetType().GetMember("m_ClientSocket", MemberTypes.All,
BindingFlags.NonPublic | BindingFlags.Instance
| BindingFlags.GetField))[0])).GetValue(cliente) ;

Console.WriteLine("La dirección IP del cliente es {0}", ((Socket)
miembro).RemoteEndPoint.ToString());
}


Espero sea de utilidad,

Saludos,


Angel J. Hernández M.
MCP - MCAD - MCSD - MCDBA
Microsoft MVP ASP/ASP.NET
http://groups.msn.com/desarrolladoresmiranda
http://www.consein.com



"luis" wrote in message
news:
Somos un grupo de alumnos de Administración de Sistemas.
Nuestro profesor nos tiene locos con el tema de sockets.
Alguien podría decirnos como podemos conocer la IP del cliente que trata
de comunicar con un TCPListener.
Con un Socket genérico es muy fácil, pero con este no tenemos propiedades
que lo indiquen.

Salu2 ASI2 Carballeira Ourense





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida