来自SocketException的Socket.RemoteEndPoint

时间:2009-10-14 09:56:45

标签: c# .net sockets socketexception

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

当抛出SocketException时,我很想知道有关'Client'套接字的详细信息 -

即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()
    }
}

1 个答案:

答案 0 :(得分:0)

我认为这不可能通过SocketException。

但是如果你有精心设计的try-catch,那么从其他地方获取Socket.RemoteEndPoint并不困难,例如你使用的Socket对象。