2009-10-14 66 views
1

当客户端通过读/写/接受操作断开连接时,抛出SocketException错误。SocketException中的Socket.RemoteEndPoint

当SocketException抛出我很想有关于“客户”插座细节 -

即Socket.RemoteEndPoint

任何从SocketException对象获得这个方式?

我特别有兴趣从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() 
    } 
} 

回答

0

我不认为这是可能的通过SocketException。

但是,如果您的try-catch设计良好,从其他位置(例如您使用的Socket对象)获取Socket.RemoteEndPoint并不困难。

+0

感谢您的回复lextm :)请看看上面的例子 – divinci 2009-10-15 20:29:38

+0

只需注意,这是为接受。那么,没有任何想法。 :)看看别人是否有建议。 – 2009-10-20 09:56:13