Aracılığıyla paylaş


Socket.IOControl Yöntem

Tanım

için Socketalt düzey işletim modlarını ayarlar.

Aşırı Yüklemeler

IOControl(Int32, Byte[], Byte[])

Sayısal denetim kodlarının kullanılması için Socket alt düzey çalışma modlarını ayarlar.

IOControl(IOControlCode, Byte[], Byte[])

Denetim kodlarını belirtmek üzere numaralandırmayı SocketIOControlCode kullanmak için alt düzey işletim modlarını ayarlar.

IOControl(Int32, Byte[], Byte[])

Kaynak:
Socket.cs
Kaynak:
Socket.cs
Kaynak:
Socket.cs

Sayısal denetim kodlarının kullanılması için Socket alt düzey çalışma modlarını ayarlar.

public:
 int IOControl(int ioControlCode, cli::array <System::Byte> ^ optionInValue, cli::array <System::Byte> ^ optionOutValue);
public int IOControl (int ioControlCode, byte[]? optionInValue, byte[]? optionOutValue);
public int IOControl (int ioControlCode, byte[] optionInValue, byte[] optionOutValue);
member this.IOControl : int * byte[] * byte[] -> int
Public Function IOControl (ioControlCode As Integer, optionInValue As Byte(), optionOutValue As Byte()) As Integer

Parametreler

ioControlCode
Int32

Int32 Gerçekleştirilecek işlemin denetim kodunu belirten bir değer.

optionInValue
Byte[]

Byte İşlemin gerektirdiği giriş verilerini içeren bir dizi.

optionOutValue
Byte[]

Byte İşlem tarafından döndürülen çıkış verilerini içeren bir dizi.

Döndürülenler

parametresindeki optionOutValue bayt sayısı.

Özel durumlar

Yuvaya erişmeye çalışılırken bir hata oluştu.

özelliği kullanılmadan engelleme modunu değiştirme girişiminde bulunuldu Blocking .

Çağrı yığınındaki bir çağıranın gerekli izinleri yok.

Örnekler

Aşağıdaki kod örneği, FIONREAD ve Available özelliğinin sonuçlarını karşılaştırır.

// FIONREAD is also available as the "Available" property.
const int FIONREAD = 0x4004667F;

void DisplayPendingByteCount( Socket^ s )
{
   array<Byte>^ outValue = BitConverter::GetBytes( 0 );
   
   // Check how many bytes have been received.
   s->IOControl( FIONREAD, nullptr, outValue );

   UInt32 bytesAvailable = BitConverter::ToUInt32( outValue, 0 );
   Console::WriteLine( "server has {0} bytes pending. Available property says {1}.",
      bytesAvailable, s->Available );

   return;
}
 // FIONREAD is also available as the "Available" property.
public const int FIONREAD   = 0x4004667F;

static void DisplayPendingByteCount(Socket s)
 {
     byte[] outValue = BitConverter.GetBytes(0);

     // Check how many bytes have been received.
     s.IOControl(FIONREAD, null, outValue);

     uint bytesAvailable = BitConverter.ToUInt32(outValue, 0);
     Console.WriteLine("server has {0} bytes pending. Available property says {1}.",
         bytesAvailable, s.Available);

     return;
 }

Açıklamalar

yöntemi, IOControl sınıfın geçerli örneğini Socket temel alan işletim sistemine Socket düşük düzeyli erişim sağlar. Daha fazla bilgi için WSAIoctl belgelerine bakın.

Not

bir alırsanız, belirli bir SocketExceptionhata kodunu almak için özelliğini kullanın SocketException.ErrorCode . Bu kodu aldıktan sonra, hatanın ayrıntılı açıklaması için Windows Yuvaları sürüm 2 API hata kodu belgelerine bakın.

Not

Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.

Şunlara uygulanır

IOControl(IOControlCode, Byte[], Byte[])

Kaynak:
Socket.cs
Kaynak:
Socket.cs
Kaynak:
Socket.cs

Denetim kodlarını belirtmek üzere numaralandırmayı SocketIOControlCode kullanmak için alt düzey işletim modlarını ayarlar.

public:
 int IOControl(System::Net::Sockets::IOControlCode ioControlCode, cli::array <System::Byte> ^ optionInValue, cli::array <System::Byte> ^ optionOutValue);
public int IOControl (System.Net.Sockets.IOControlCode ioControlCode, byte[]? optionInValue, byte[]? optionOutValue);
public int IOControl (System.Net.Sockets.IOControlCode ioControlCode, byte[] optionInValue, byte[] optionOutValue);
member this.IOControl : System.Net.Sockets.IOControlCode * byte[] * byte[] -> int
Public Function IOControl (ioControlCode As IOControlCode, optionInValue As Byte(), optionOutValue As Byte()) As Integer

Parametreler

ioControlCode
IOControlCode

IOControlCode Gerçekleştirilecek işlemin denetim kodunu belirten değer.

optionInValue
Byte[]

İşlemin gerektirdiği giriş verilerini içeren tür Byte dizisi.

optionOutValue
Byte[]

İşlem tarafından döndürülen çıkış verilerini içeren tür Byte dizisi.

Döndürülenler

parametresindeki optionOutValue bayt sayısı.

Özel durumlar

Yuvaya erişmeye çalışılırken bir hata oluştu.

özelliği kullanılmadan engelleme modunu değiştirme girişiminde bulunuldu Blocking .

Örnekler

Aşağıdaki kod örneği ile DataToRead ve Available özelliğini çağırmanın IOControl sonuçlarını karşılaştırır.

void DisplayPendingByteCount( Socket^ s )
{
   array<Byte>^ outValue = BitConverter::GetBytes( 0 );
   
   // Check how many bytes have been received.
   s->IOControl( IOControlCode::DataToRead, nullptr, outValue );

   UInt32 bytesAvailable = BitConverter::ToUInt32( outValue, 0 );
   Console::Write( "server has {0} bytes pending,",
      bytesAvailable );
   Console::WriteLine( "Available property says {1}.",
      s->Available );
   return;
}
static void DisplayPendingByteCount(Socket s)
{
    byte[] outValue = BitConverter.GetBytes(0);

    // Check how many bytes have been received.
    s.IOControl(IOControlCode.DataToRead, null, outValue);

    uint bytesAvailable = BitConverter.ToUInt32(outValue, 0);
    Console.Write("server has {0} bytes pending. ",
        bytesAvailable);
    Console.WriteLine("Available property says {1}.",
                     s.Available);

    return;
}

Açıklamalar

Bu yöntem, sınıfın geçerli örneğini Socket temel alan işletim sistemine Socket düşük düzeyli erişim sağlar. Daha fazla bilgi için WSAIoctl belgelerine bakın.

Not

bir alırsanız, belirli bir SocketExceptionhata kodunu almak için özelliğini kullanın SocketException.ErrorCode . Bu kodu aldıktan sonra, hatanın ayrıntılı açıklaması için Windows Yuvaları sürüm 2 API hata kodu belgelerine bakın.

Not

Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.

Şunlara uygulanır