2009-10-14 62 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