2009-10-14 10 views
1

Une erreur SocketException est renvoyée lorsqu'un client se déconnecte via les opérations de lecture/écriture/acceptation.Socket.RemoteEndPoint à partir de SocketException

Quand SocketException est jeté, j'aimerais avoir des détails sur cette socket « client » -

à savoir la Socket.RemoteEndPoint

De toute façon d'obtenir cela de l'objet SocketException?

Je suis particulièrement intéressé par l'obtention de détails de requête à partir des routines BeginAccept/EndAccept.

private Socket _listeningSocket; 
// _listeningSocket.Bind().Listen()._BeginAccept().etc 

public static void _BeginAccept() 
{ 
    _listeningSocket.BeginAccept(new new AsyncCallback(_EndAccept),null); 
} 

public static void _EndAccept(IAsyncResult ar) 
{ 
    try 
    { 
     Socket acceptedSocket = _listeningSocket.EndAccept(ar); 
     Process(acceptedSocket); 
    } 
    catch(SocketException se) 
    { 
     ///////////////////////////////////////////////// 
     // Who tried to connect to my _listeningSocket!!! 
     ///////////////////////////////////////////////// 
    } 
    finally 
    { 
     _BeginAccept() 
    } 
} 

Répondre

0

Je ne pense pas que ce soit possible via SocketException.

Mais si vous avez bien conçu le try-catch, il ne serait pas difficile d'obtenir Socket.RemoteEndPoint d'ailleurs, comme l'objet Socket que vous utilisez.

+0

merci pour votre réponse lextm :) s'il vous plaît jeter un oeil à l'exemple ci-dessus – divinci

+0

Notez juste que c'est pour accepter. Eh bien, n'en ai aucune idée. :) Voir si d'autres ont des suggestions. –