Socket.BeginAccept Метод

Определение

Начинает асинхронную операцию, чтобы принять попытку входящего подключения.

Перегрузки

BeginAccept(AsyncCallback, Object)

Начинает асинхронную операцию, чтобы принять попытку входящего подключения.

BeginAccept(Int32, AsyncCallback, Object)

Начинает асинхронную операцию, чтобы принять попытку входящего подключения и получить первый блок данных, посланных клиентским приложением.

BeginAccept(Socket, Int32, AsyncCallback, Object)

Начинает асинхронную операцию, чтобы принять попытку входящего подключения с указанного сокета и получить первый блок данных, посланных клиентским приложением.

BeginAccept(AsyncCallback, Object)

Начинает асинхронную операцию, чтобы принять попытку входящего подключения.

public:
 IAsyncResult ^ BeginAccept(AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginAccept (AsyncCallback? callback, object? state);
public IAsyncResult BeginAccept (AsyncCallback callback, object state);
member this.BeginAccept : AsyncCallback * obj -> IAsyncResult
Public Function BeginAccept (callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

callback
AsyncCallback

Делегат AsyncCallback.

state
Object

Объект, содержащий сведения о состоянии для этого запроса.

Возвращаемое значение

IAsyncResult

Объект IAsyncResult, который ссылается на асинхронное создание объекта Socket.

Исключения

Объект Socket закрыт.

Этот метод доступен только в Windows NT.

Принимающий сокет не производит прослушивание подключений. Необходимо вызвать Bind(EndPoint) и Listen(Int32) до вызова объекта BeginAccept(AsyncCallback, Object).

-или-

Производится связывание принимающего сокета.

Значение параметраreceiveSize меньше 0.

только платформа .NET Framework и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка.

Примеры

В следующем примере кода предпринимается попытка асинхронного получения входящего подключения.

IPHostEntry^ lipa = Dns::Resolve( "host.contoso.com" );
IPEndPoint^ lep = gcnew IPEndPoint( lipa->AddressList[ 0 ], 11000 );

Socket^ s = gcnew Socket( lep->Address->AddressFamily,
   SocketType::Stream,
   ProtocolType::Tcp );
try
{
   s->Bind( lep );
   s->Listen( 1000 );

   while ( true )
   {
      allDone->Reset();

      Console::WriteLine( "Waiting for a connection..." );
      s->BeginAccept( gcnew AsyncCallback( &Async_Send_Receive::Connect_Callback ), s );

      allDone->WaitOne();
   }
}
catch ( Exception^ e ) 
{
   Console::WriteLine( e );
}
IPHostEntry lipa = Dns.Resolve("host.contoso.com");
IPEndPoint lep = new IPEndPoint(lipa.AddressList[0], 11000);

   Socket s = new Socket(lep.Address.AddressFamily,
                               SocketType.Stream,
                                     ProtocolType.Tcp);
   try{
        s.Bind(lep);
        s.Listen(1000);

        while(true){
             allDone.Reset();

             Console.WriteLine("Waiting for a connection...");
             s.BeginAccept(new AsyncCallback(Async_Send_Receive.Listen_Callback), s);

             allDone.WaitOne();
        }
   }
   catch (Exception e){
        Console.WriteLine(e.ToString());
   }
   Dim lipa As IPHostEntry = Dns.Resolve("host.contoso.com")
   Dim lep As New IPEndPoint(lipa.AddressList(0), 11000)
   
   Dim s As New Socket(lep.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
   Try
      s.Bind(lep)
      s.Listen(1000)
      
      While True
         allDone.Reset()
         
         Console.WriteLine("Waiting for a connection...")
         s.BeginAccept(New AsyncCallback(AddressOf Async_Send_Receive.Listen_Callback), s)
         
         allDone.WaitOne()
      End While
   Catch e As Exception
      Console.WriteLine(e.ToString())
   End Try
End Sub

Комментарии

Протоколы, ориентированные на BeginAccept подключение, могут использовать метод для асинхронной обработки входящих попыток подключения. Асинхронное принятие подключений дает возможность отправлять и получать данные в отдельном потоке выполнения. Перед вызовом BeginAccept метода необходимо вызвать Listen метод для прослушивания и очереди входящих запросов на подключение.

Необходимо создать метод обратного вызова, который реализует AsyncCallback делегат и передает его имя методу BeginAccept . Для этого, по крайней мере, необходимо передать объект BeginAccept прослушивания Socket через state параметр. Если обратный вызов нуждается в дополнительных сведениях, можно создать небольшой класс для хранения Socket других необходимых сведений. Передайте экземпляр этого класса методу BeginAccept через state параметр.

Метод обратного EndAccept вызова должен вызывать метод. При вызове BeginAcceptприложения система обычно использует отдельный поток для выполнения указанного метода обратного вызова и блокируется EndAccept до получения ожидающего подключения. EndAccept возвращает новый Socket объект, который можно использовать для отправки и получения данных с удаленным узлом. Вы не можете использовать это значение Socket для приема дополнительных подключений из очереди подключений. Если вы хотите, чтобы исходный поток блокировать после вызова BeginAccept метода, используйте WaitHandle.WaitOne. Вызовите метод ManualResetEvent Set в методе обратного вызова, если вы хотите, чтобы исходный поток продолжал выполняться.

Система также может использовать вызывающий поток для вызова метода обратного вызова. В этом случае для возвращаемого IAsyncResult свойства будет задано значение, CompletedSynchronously указывающее, что BeginAccept метод завершился синхронно.

Дополнительные сведения о написании методов обратного вызова см. в разделе маршалинг делегата в качестве метода обратного вызова.

Чтобы отменить ожидающий вызов BeginAccept метода, закройте Socket. При вызове Close метода во время асинхронной операции вызывается обратный вызов, предоставленный методу BeginAccept . Последующий вызов EndAccept метода вызовет исключение ObjectDisposedException , указывающее, что операция отменена.

Примечание

Свойство возвращенного Socket можно использовать RemoteEndPoint для идентификации сетевого адреса и номера порта удаленного узла.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в разделе "Трассировка сети" в платформа .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенный пользователь и вызывающий контекст) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретный асинхронный Socket метод, конкретный Socket экземпляр и конкретный обратный вызов) последующие использования этого контекста увидят улучшение производительности.

См. также раздел

Применяется к

BeginAccept(Int32, AsyncCallback, Object)

Начинает асинхронную операцию, чтобы принять попытку входящего подключения и получить первый блок данных, посланных клиентским приложением.

public:
 IAsyncResult ^ BeginAccept(int receiveSize, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginAccept (int receiveSize, AsyncCallback? callback, object? state);
public IAsyncResult BeginAccept (int receiveSize, AsyncCallback callback, object state);
member this.BeginAccept : int * AsyncCallback * obj -> IAsyncResult
Public Function BeginAccept (receiveSize As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

receiveSize
Int32

Число байтов, которые необходимо принять от отправителя.

callback
AsyncCallback

Делегат AsyncCallback.

state
Object

Объект, содержащий сведения о состоянии для этого запроса.

Возвращаемое значение

IAsyncResult

Объект IAsyncResult, который ссылается на асинхронное создание объекта Socket.

Исключения

Объект Socket закрыт.

Этот метод доступен только в Windows NT.

Принимающий сокет не производит прослушивание подключений. Необходимо вызвать Bind(EndPoint) и Listen(Int32) до вызова объекта BeginAccept(AsyncCallback, Object).

-или-

Производится связывание принимающего сокета.

Значение параметраreceiveSize меньше 0.

только платформа .NET Framework и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка.

Примеры

В следующем примере кода открывается сокет и принимается асинхронное подключение. В этом примере сокет принимает начальные 10 байт данных. Количество полученных байтов и данные отображаются в консоли делегатом обратного вызова. См BeginReceive . описание получения оставшихся данных.

   // This server waits for a connection and then uses asynchronous operations to
   // accept the connection with initial data sent from the client.
   // Establish the local endpoint for the socket.
   IPHostEntry^ ipHostInfo = Dns::GetHostEntry( Dns::GetHostName() );
   IPAddress^ ipAddress = ipHostInfo->AddressList[ 0 ];
   IPEndPoint^ localEndPoint = gcnew IPEndPoint( ipAddress,11000 );
   
   // Create a TCP/IP socket.
   Socket^ listener = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   
   // Bind the socket to the local endpoint, and listen for incoming connections.
   listener->Bind( localEndPoint );
   listener->Listen( 100 );
   for ( ; ;  )
   {
      
      // Set the event to nonsignaled state.
      allDone->Reset();
      
      // Start an asynchronous socket to listen for connections and receive data from the client.
      Console::WriteLine( "Waiting for a connection..." );
      
      // Accept the connection and receive the first 10 bytes of data.
      int receivedDataSize = 10;
      listener->BeginAccept( receivedDataSize, gcnew AsyncCallback( AcceptReceiveCallback ), listener );
      
      // Wait until a connection is made and processed before continuing.
      allDone->WaitOne();

   }
}

static void AcceptReceiveCallback( IAsyncResult^ ar )
{
   // Get the socket that handles the client request.
   Socket^ listener = dynamic_cast<Socket^>(ar->AsyncState);

   // End the operation and display the received data on the console.
   array<Byte>^Buffer;
   int bytesTransferred;
   Socket^ handler = listener->EndAccept( Buffer, bytesTransferred, ar );
   String^ stringTransferred = Encoding::ASCII->GetString( Buffer, 0, bytesTransferred );
   Console::WriteLine( stringTransferred );
   Console::WriteLine( "Size of data transferred is {0}", bytesTransferred );

   // Create the state object for the asynchronous receive.
   StateObject^ state = gcnew StateObject;
   state->workSocket = handler;
   handler->BeginReceive( state->buffer, 0, StateObject::BufferSize, static_cast<SocketFlags>(0), gcnew AsyncCallback( ReadCallback ), state );
}
    // This server waits for a connection and then uses asynchronous operations to
    // accept the connection with initial data sent from the client.

    // Establish the local endpoint for the socket.

    IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
    IPAddress ipAddress = ipHostInfo.AddressList[0];
    IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);

    // Create a TCP/IP socket.
    Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );

    // Bind the socket to the local endpoint, and listen for incoming connections.
    listener.Bind(localEndPoint);
    listener.Listen(100);

    while (true)
    {
        // Set the event to nonsignaled state.
        allDone.Reset();

        // Start an asynchronous socket to listen for connections and receive data from the client.
        Console.WriteLine("Waiting for a connection...");

        // Accept the connection and receive the first 10 bytes of data.
        int receivedDataSize = 10;
        listener.BeginAccept(receivedDataSize, new AsyncCallback(AcceptReceiveCallback), listener);

        // Wait until a connection is made and processed before continuing.
        allDone.WaitOne();
    }
}

public static void AcceptReceiveCallback(IAsyncResult ar)
{
    // Get the socket that handles the client request.
    Socket listener = (Socket) ar.AsyncState;

    // End the operation and display the received data on the console.
    byte[] Buffer;
    int bytesTransferred;
    Socket handler = listener.EndAccept(out Buffer, out bytesTransferred, ar);
    string stringTransferred = Encoding.ASCII.GetString(Buffer, 0, bytesTransferred);

    Console.WriteLine(stringTransferred);
    Console.WriteLine("Size of data transferred is {0}", bytesTransferred);

    // Create the state object for the asynchronous receive.
    StateObject state = new StateObject();
    state.workSocket = handler;
    handler.BeginReceive( state.buffer, 0, StateObject.BufferSize, 0,
    new AsyncCallback(ReadCallback), state);
}

Комментарии

Протоколы, ориентированные на подключение, могут использовать BeginAccept метод для асинхронной обработки входящих попыток подключения. Асинхронное принятие подключений позволяет отправлять и получать данные в отдельном потоке выполнения. Эта перегрузка позволяет указать количество байтов, принимаемых при первоначальной передаче в параметре receiveSize .

Перед вызовом BeginAccept метода необходимо вызвать Listen метод для прослушивания и очереди входящих запросов на подключение.

Необходимо создать метод обратного AsyncCallback вызова, реализующий делегат, и передать его имя методу BeginAccept . Для этого, как минимум, необходимо передать объект BeginAccept прослушивания Socket через state параметр. Если обратный вызов нуждается в дополнительных сведениях, можно создать небольшой класс для хранения Socket и других необходимых сведений. Передайте экземпляр этого класса методу BeginAccept через state параметр.

Метод обратного EndAccept вызова должен вызывать этот метод. При вызове BeginAcceptприложения система обычно использует отдельный поток для выполнения указанного метода обратного вызова и блокируется EndAccept до получения ожидающего подключения.

EndAccept возвращает новое Socket , которое можно использовать для отправки и получения данных с удаленным узлом. Это невозможно Socket использовать для приема дополнительных подключений из очереди подключений. Если вы хотите, чтобы исходный поток блокировать после вызова BeginAccept метода, используйте WaitHandle.WaitOne. Вызовите метод ManualResetEvent Set в методе обратного вызова, если вы хотите, чтобы исходный поток продолжал выполняться.

Система также может использовать вызывающий поток для вызова метода обратного вызова. В этом случае свойству CompletedSynchronously возвращаемого IAsyncResult значения будет присвоено значение, указывающее, что BeginAccept метод завершен синхронно.

Дополнительные сведения о написании методов обратного вызова см. в разделе "Маршалинг делегата в качестве метода обратного вызова".

Чтобы отменить ожидающий вызов BeginAccept метода, закройте Socket. При вызове Close метода во время выполнения асинхронной операции вызывается обратный вызов, предоставленный методу BeginAccept . Последующий вызов EndAccept метода вызовет ObjectDisposedException исключение, указывающее, что операция отменена.

Примечание

Вы можете вызвать RemoteEndPoint свойство возвращаемого Socket объекта, чтобы определить сетевой адрес и номер порта удаленного узла.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows Sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в разделе "Трассировка сети" в платформа .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенный пользователь и контекст вызова) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретного асинхронного Socket метода, конкретного Socket экземпляра и конкретного обратного вызова) последующие использования этого контекста увидят улучшение производительности.

См. также раздел

Применяется к

BeginAccept(Socket, Int32, AsyncCallback, Object)

Начинает асинхронную операцию, чтобы принять попытку входящего подключения с указанного сокета и получить первый блок данных, посланных клиентским приложением.

public:
 IAsyncResult ^ BeginAccept(System::Net::Sockets::Socket ^ acceptSocket, int receiveSize, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginAccept (System.Net.Sockets.Socket? acceptSocket, int receiveSize, AsyncCallback? callback, object? state);
public IAsyncResult BeginAccept (System.Net.Sockets.Socket acceptSocket, int receiveSize, AsyncCallback callback, object state);
member this.BeginAccept : System.Net.Sockets.Socket * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginAccept (acceptSocket As Socket, receiveSize As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

acceptSocket
Socket

Принятый объект Socket. Это значение может быть равно null.

receiveSize
Int32

Максимальное число принимаемых байтов.

callback
AsyncCallback

Делегат AsyncCallback.

state
Object

Объект, содержащий сведения о состоянии для этого запроса.

Возвращаемое значение

IAsyncResult

Объект IAsyncResult, который ссылается на асинхронное создание объекта Socket.

Исключения

Объект Socket закрыт.

Этот метод доступен только в Windows NT.

Принимающий сокет не производит прослушивание подключений. Необходимо вызвать Bind(EndPoint) и Listen(Int32) до вызова объекта BeginAccept(AsyncCallback, Object).

-или-

Производится связывание принимающего сокета.

Значение параметраreceiveSize меньше 0.

только платформа .NET Framework и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка.

Примеры

В следующем примере кода открывается сокет и принимается асинхронное подключение. В этом примере сокет принимает начальные 10 байт данных, а acceptSocket параметр — nullэто принудительное BeginAccept создание принятого сокета. Количество полученных байтов и данные отображаются в консоли делегатом обратного вызова. См BeginReceive . описание получения оставшихся данных.

   // This server waits for a connection and then uses asynchronous operations to
   // accept the connection with initial data sent from the client.
   // Establish the local endpoint for the socket.
   IPHostEntry^ ipHostInfo = Dns::GetHostEntry( Dns::GetHostName() );
   IPAddress^ ipAddress = ipHostInfo->AddressList[ 0 ];
   IPEndPoint^ localEndPoint = gcnew IPEndPoint( ipAddress,11000 );

   // Create a TCP/IP socket.
   Socket^ listener = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );

   // Bind the socket to the local endpoint, and listen for incoming connections.
   listener->Bind( localEndPoint );
   listener->Listen( 100 );
   for ( ; ;  )
   {
      // Set the event to nonsignaled state.
      allDone->Reset();

      // Start an asynchronous socket to listen for connections and receive data from the client.
      Console::WriteLine( "Waiting for a connection..." );

      // Accept the connection and receive the first 10 bytes of data. 
      // BeginAccept() creates the accepted socket.
      int receivedDataSize = 10;
      listener->BeginAccept( nullptr, receivedDataSize, gcnew AsyncCallback( AcceptReceiveDataCallback ), listener );

      // Wait until a connection is made and processed before continuing.
      allDone->WaitOne();
   }
}

static void AcceptReceiveDataCallback( IAsyncResult^ ar )
{
   // Get the socket that handles the client request.
   Socket^ listener = dynamic_cast<Socket^>(ar->AsyncState);
   
   // End the operation and display the received data on the console.
   array<Byte>^Buffer;
   int bytesTransferred;
   Socket^ handler = listener->EndAccept( Buffer, bytesTransferred, ar );
   String^ stringTransferred = Encoding::ASCII->GetString( Buffer, 0, bytesTransferred );
   Console::WriteLine( stringTransferred );
   Console::WriteLine( "Size of data transferred is {0}", bytesTransferred );
   
   // Create the state object for the asynchronous receive.
   StateObject^ state = gcnew StateObject;
   state->workSocket = handler;
   handler->BeginReceive( state->buffer, 0, StateObject::BufferSize, static_cast<SocketFlags>(0), gcnew AsyncCallback( ReadCallback ), state );
}
    // This server waits for a connection and then uses asynchronous operations to
    // accept the connection with initial data sent from the client.

    // Establish the local endpoint for the socket.

    IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
    IPAddress ipAddress = ipHostInfo.AddressList[0];
    IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);

    // Create a TCP/IP socket.
    Socket listener = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream, ProtocolType.Tcp );

    // Bind the socket to the local endpoint, and listen for incoming connections.
    listener.Bind(localEndPoint);
    listener.Listen(100);

    while (true)
    {
        // Set the event to nonsignaled state.
        allDone.Reset();

        // Start an asynchronous socket to listen for connections and receive data from the client.
        Console.WriteLine("Waiting for a connection...");

        // Accept the connection and receive the first 10 bytes of data.
        // BeginAccept() creates the accepted socket.
        int receivedDataSize = 10;
        listener.BeginAccept(null, receivedDataSize, new AsyncCallback(AcceptReceiveDataCallback), listener);

        // Wait until a connection is made and processed before continuing.
        allDone.WaitOne();
    }
}

public static void AcceptReceiveDataCallback(IAsyncResult ar)
{
    // Get the socket that handles the client request.
    Socket listener = (Socket) ar.AsyncState;

    // End the operation and display the received data on the console.
    byte[] Buffer;
    int bytesTransferred;
    Socket handler = listener.EndAccept(out Buffer, out bytesTransferred, ar);
    string stringTransferred = Encoding.ASCII.GetString(Buffer, 0, bytesTransferred);

    Console.WriteLine(stringTransferred);
    Console.WriteLine("Size of data transferred is {0}", bytesTransferred);

    // Create the state object for the asynchronous receive.
    StateObject state = new StateObject();
    state.workSocket = handler;
    handler.BeginReceive( state.buffer, 0, StateObject.BufferSize, 0,
    new AsyncCallback(ReadCallback), state);
}

Комментарии

Протоколы, ориентированные на подключение, могут использовать BeginAccept метод для асинхронной обработки входящих попыток подключения. Принятие подключений асинхронно дает возможность отправлять и получать данные в отдельном потоке выполнения. Эта перегрузка позволяет указать принятый сокет в параметре acceptSocket . Если этот параметр имеет значение null, метод создает принятый BeginAccept сокет. Можно указать число байтов, которые будут приниматься при первоначальной передаче в параметре receiveSize .

Перед вызовом BeginAccept метода необходимо вызвать Listen метод для прослушивания и очереди входящих запросов на подключение.

Необходимо создать метод обратного AsyncCallback вызова, реализующий делегат, и передать его имя методу BeginAccept . Для этого, как минимум, необходимо передать объект BeginAccept прослушивания Socket через state параметр. Если обратный вызов нуждается в дополнительных сведениях, можно создать небольшой класс для хранения Socket и других необходимых сведений. Передайте экземпляр этого класса методу BeginAccept через state параметр.

Метод обратного EndAccept вызова должен вызывать этот метод. При вызове BeginAcceptприложения система обычно использует отдельный поток для выполнения указанного метода обратного вызова и блокируется EndAccept до получения ожидающего подключения.

EndAccept возвращает новый Socket объект, который можно использовать для отправки и получения данных с удаленным узлом. Это невозможно Socket использовать для приема дополнительных подключений из очереди подключений. Если вы хотите, чтобы исходный поток блокировать после вызова BeginAccept метода, используйте WaitHandle.WaitOne. Вызовите метод ManualResetEvent Set в методе обратного вызова, если вы хотите, чтобы исходный поток продолжал выполняться.

Система также может использовать вызывающий поток для вызова метода обратного вызова. В этом случае свойству CompletedSynchronously возвращаемого IAsyncResult значения будет присвоено значение, указывающее, что BeginAccept метод завершен синхронно.

Дополнительные сведения о написании методов обратного вызова см. в разделе "Маршалинг делегата в качестве метода обратного вызова".

Чтобы отменить ожидающий вызов BeginAccept метода, закройте Socket. При вызове Close метода во время выполнения асинхронной операции вызывается обратный вызов, предоставленный методу BeginAccept . Последующий вызов EndAccept метода вызовет ObjectDisposedException исключение, указывающее, что операция отменена.

Примечание

Свойство возвращаемого Socket объекта можно использовать RemoteEndPoint для идентификации сетевого адреса и номера порта удаленного узла.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows Sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в разделе "Трассировка сети" в платформа .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенный пользователь и контекст вызова) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретного асинхронного Socket метода, конкретного Socket экземпляра и конкретного обратного вызова) последующие использования этого контекста увидят улучшение производительности.

См. также раздел

Применяется к