Aracılığıyla paylaş


Socket.Receive Yöntem

Tanım

İlişkili Socketbir 'den veri alır.

Aşırı Yüklemeler

Receive(Byte[], Int32, Int32, SocketFlags, SocketError)

Belirtilen SocketFlagskullanarak bir bağlıdan Socket alma arabelleğine veri alır.

Receive(Span<Byte>, SocketFlags, SocketError)

Belirtilen SocketFlagskullanarak bir bağlıdan Socket alma arabelleğine veri alır.

Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Belirtilen SocketFlagskullanarak alma arabellekleri listesine bağlı Socket olan bir veri alır.

Receive(Byte[], Int32, SocketFlags)

Belirtilen değerini kullanarak SocketFlagsbir bağlamadan alma arabelleğine belirtilen Socket sayıda veri alır.

Receive(Span<Byte>, SocketFlags)

Belirtilen SocketFlagskullanarak bir bağlıdan Socket alma arabelleğine veri alır.

Receive(Byte[], Int32, Int32, SocketFlags)

Belirtilen bayt sayısını, belirtilen kullanarak alma arabelleğinin belirtilen uzaklık konumuna SocketFlagsbağlı olan bir bağlantıdan Socket alır.

Receive(Byte[], SocketFlags)

Belirtilen SocketFlagskullanarak bir bağlıdan Socket alma arabelleğine veri alır.

Receive(Span<Byte>)

Bir sınırdan Socket alma arabelleğine veri alır.

Receive(IList<ArraySegment<Byte>>)

Bir sınırdan Socket alma arabellekleri listesine veri alır.

Receive(Byte[])

Bir sınırdan Socket alma arabelleğine veri alır.

Receive(IList<ArraySegment<Byte>>, SocketFlags)

Belirtilen SocketFlagskullanarak alma arabellekleri listesine bağlı Socket olan bir veri alır.

Receive(Byte[], Int32, Int32, SocketFlags, SocketError)

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

Belirtilen SocketFlagskullanarak bir bağlıdan Socket alma arabelleğine veri alır.

public:
 int Receive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Receive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parametreler

buffer
Byte[]

Alınan verilerin depolama konumu olan tür Byte dizisi.

offset
Int32

Alınan verileri depolamak için parametresindeki konum buffer .

size
Int32

Alınacak bayt sayısı.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

errorCode
SocketError

SocketError Yuva hatasını depolayan bir nesne.

Döndürülenler

Alınan bayt sayısı.

Özel durumlar

buffer, null değeridir.

offset 0'dan küçüktür.

-veya-

offset , uzunluğundan bufferbüyüktür.

-veya-

size 0'dan küçüktür.

-veya-

size , parametresinin buffer değeri eksi değerinden offset büyük.

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

Açıklamalar

Receive yöntemi verileri buffer parametresine okur ve başarıyla okunan bayt sayısını döndürür. Hem bağlantı odaklı hem de bağlantısız yuvalardan çağrı Receive yapabilirsiniz.

Bağlantı odaklı bir protokol kullanıyorsanız, uzak ana bilgisayar bağlantısı kurmak veya Accept çağırmadan önce gelen bir bağlantıyı kabul etmek için öğesini çağırmalısınız.ConnectReceive Receive yöntemi yalnızca veya Accept yönteminde Connect oluşturulan uzak konaktan gelen verileri okur. Bağlantısız bir protokol kullanıyorsanız yöntemini de kullanabilirsiniz ReceiveFrom . ReceiveFrom herhangi bir konaktan gelen verileri almanıza olanak sağlar.

Okuma için kullanılabilir veri yoksa, kullanılarak Socket.ReceiveTimeoutbir zaman aşımı değeri ayarlanmadığı Receive sürece, veri kullanılabilir olana kadar yöntemi engeller. Zaman aşımı değeri aşılırsa, Receive çağrısı bir SocketExceptionoluşturur. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa yöntemi Receive hemen tamamlanır ve bir SocketExceptionoluşturur. Yuvaya erişmeye çalışılırken bir hata oluştu. Aşağıdaki Açıklamalar'a bakın. Okuma için kullanılabilir veri olup olmadığını belirlemek için özelliğini kullanabilirsiniz Available . Sıfır olmayan bir değer olduğunda Available alma işlemini yeniden deneyin.

Bağlantı odaklı SocketReceive bir kullanıyorsanız, yöntem boyut parametresi tarafından belirtilen bayt sayısına kadar mümkün olduğunca çok veri okur. Uzak ana bilgisayar yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve tüm kullanılabilir veriler alınmışsa, Receive yöntem hemen tamamlanır ve sıfır bayt döndürür.

Bağlantısız Socketkullanıyorsanız, Receive yönteminde Connect belirttiğiniz hedef adresten kuyruğa alınan ilk veri birimini okur. Aldığınız veri birimi parametrenin boyutundan buffer büyükse iletinin buffer ilk bölümüyle doldurulur, fazla veriler kaybolur ve bir SocketException oluşturulur.

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.

Ayrıca bkz.

Şunlara uygulanır

Receive(Span<Byte>, SocketFlags, SocketError)

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

Belirtilen SocketFlagskullanarak bir bağlıdan Socket alma arabelleğine veri alır.

public:
 int Receive(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : Span<byte> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Receive (buffer As Span(Of Byte), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parametreler

buffer
Span<Byte>

Alınan verilerin depolama konumu olan bayt aralığı.

socketFlags
SocketFlags

Gönderme ve alma davranışlarını belirten numaralandırma değerlerinin bit düzeyinde birleşimi.

errorCode
SocketError

Bu yöntem döndürdüğünde yuva için hata kodlarını tanımlayan numaralandırma değerlerinden birini içerir.

Döndürülenler

Alınan bayt sayısı.

Özel durumlar

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

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

Açıklamalar

Receive yöntemi verileri buffer parametresine okur ve başarıyla okunan bayt sayısını döndürür. Hem bağlantı odaklı hem de bağlantısız yuvalardan çağrı Receive yapabilirsiniz.

Bu aşırı yükleme yalnızca alma arabelleği sağlamanızı gerektirir. Arabellek uzaklığı varsayılan olarak 0' a, boyut varsayılan olarak arabellek parametresinin uzunluğuna, SocketFlags değer ise varsayılan Noneolarak olur.

Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak veya Accept çağırmadan Connect önce gelen bir bağlantıyı kabul etmek için çağrısında Receivebulunması gerekir. Receive yöntemi yalnızca veya Accept yönteminde Connect oluşturulan uzak konaktan gelen verileri okur. Bağlantısız bir protokol kullanıyorsanız yöntemini de kullanabilirsiniz ReceiveFrom . ReceiveFrom herhangi bir konaktan gelen verileri almanıza olanak sağlar.

Okuma için kullanılabilir veri yoksa, kullanılarak Socket.ReceiveTimeoutbir zaman aşımı değeri ayarlanmadığı Receive sürece, veri kullanılabilir olana kadar yöntemi engeller. Zaman aşımı değeri aşıldığında çağrısı Receive bir SocketExceptionoluşturur. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa yöntemi Receive hemen tamamlanır ve bir SocketExceptionoluşturur. Okuma için kullanılabilir veri olup olmadığını belirlemek için özelliğini kullanabilirsiniz Available . Sıfır olmayan bir değer olduğunda Available alma işlemini yeniden deneyin.

Bağlantı odaklı SocketReceive bir kullanıyorsanız yöntemi, arabellek boyutuna kadar mümkün olduğunca çok veri okur. Uzak ana bilgisayar yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve tüm kullanılabilir veriler alınmışsa, Receive yöntem hemen tamamlanır ve sıfır bayt döndürür.

Bağlantısız Socketkullanıyorsanız, Receive yönteminde Connect belirttiğiniz hedef adresten kuyruğa alınan ilk veri birimini okur. Aldığınız veri birimi parametrenin boyutundan buffer büyükse iletinin buffer ilk bölümüyle doldurulur, fazla veriler kaybolur ve bir SocketException oluşturulur.

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.

Ayrıca bkz.

Şunlara uygulanır

Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

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

Belirtilen SocketFlagskullanarak, bir sınırdan Socket alma arabellekleri listesine veri alır.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parametreler

buffers
IList<ArraySegment<Byte>>

Alınan verileri içeren türün Byte s listesiArraySegment<T>.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

errorCode
SocketError

SocketError Yuva hatasını depolayan bir nesne.

Döndürülenler

Alınan bayt sayısı.

Özel durumlar

buffers, null değeridir.

-veya-

buffers. Sayı sıfırdır.

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

Açıklamalar

Bu yöntem verileri parametresine buffers okur ve başarıyla okunan bayt sayısını döndürür. Hem bağlantı odaklı hem de bağlantısız yuvalardan çağrı yapabilirsiniz.

Bu aşırı yükleme, bir veya daha fazla alma arabelleği sağlamanızı gerektirir. SocketFlags Değeri varsayılan olarak ayarlanırNone.

Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak veya Accept çağırmadan önce gelen bir bağlantıyı kabul etmek için aramanız ConnectReceivegerekir. Receive yöntemi yalnızca veya Accept yönteminde Connect kurulan uzak konak bağlantısından gelen verileri okur. Bağlantısız bir protokol kullanıyorsanız yöntemini de kullanabilirsiniz ReceiveFrom . ReceiveFrom herhangi bir konaktan gelen verileri almanıza olanak sağlar.

Okuma için kullanılabilir veri yoksa, Receive yöntemi kullanılarak Socket.ReceiveTimeoutbir zaman aşımı değeri ayarlanmadığı sürece veriler kullanılabilir duruma gelene kadar engeller. Zaman aşımı değeri aşıldıysa, Receive çağrısı bir SocketExceptionoluşturur. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa yöntemi Receive hemen tamamlanır ve bir SocketExceptionoluşturur. okuma için kullanılabilir veri olup olmadığını belirlemek için özelliğini kullanabilirsiniz Available . Available Sıfır olmadığında alma işlemini yeniden deneyin.

Bağlantı odaklı SocketReceive bir kullanıyorsanız yöntemi, arabellek boyutuna kadar mümkün olduğunca çok veri okur. Uzak ana bilgisayar yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve tüm kullanılabilir veriler alınırsa, Receive yöntem hemen tamamlanır ve sıfır bayt döndürür.

Bağlantısız Socketkullanıyorsanız,Receive yönteminde Connect belirttiğiniz hedef adresten kuyruğa alınan ilk veri birimini okur. Aldığınız veri birimi parametrenin boyutundan buffers büyükse, buffers iletinin ilk bölümüyle doldurulursa, fazla veriler kaybolur ve bir SocketException oluşturulur.

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.

Ayrıca bkz.

Şunlara uygulanır

Receive(Byte[], Int32, SocketFlags)

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

Belirtilen değerini kullanarak SocketFlagsbir sınırdan Socket alma arabelleğine belirtilen sayıda veri alır.

public:
 int Receive(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * int * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), size As Integer, socketFlags As SocketFlags) As Integer

Parametreler

buffer
Byte[]

Alınan verilerin depolama konumu olan tür Byte dizisi.

size
Int32

Alınacak bayt sayısı.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

Döndürülenler

Alınan bayt sayısı.

Özel durumlar

buffer, null değeridir.

size boyutunu bufferaşıyor.

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

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

Örnekler

Aşağıdakiler dosyasında bulunan bufferverileri alır ve için SocketFlagsbelirtirNone.

// Receive the host home page content and loop until all the data is received.
Int32 bytes = s->Receive( RecvBytes, RecvBytes->Length, SocketFlags::None );
strRetPage =  "Default HTML page on ";
strRetPage->Concat( server,  ":\r\n", ASCII->GetString( RecvBytes, 0, bytes ) );
while ( bytes > 0 )
{
   bytes = s->Receive( RecvBytes, RecvBytes->Length, SocketFlags::None );
   strRetPage->Concat( ASCII->GetString( RecvBytes, 0, bytes ) );
}

// Receive the host home page content and loop until all the data is received.
Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
strRetPage = "Default HTML page on " + server + ":\r\n";
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);

while (bytes > 0)
{
  bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
  strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
}

' Receive the host home page content and loop until all the data is received.

'Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)
Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)

strRetPage = "Default HTML page on " + server + ":\r\n"
strRetPage = "Default HTML page on " + server + ":" + ControlChars.Lf + ControlChars.NewLine

Dim i As Integer

While bytes > 0

  bytes = s.Receive(RecvBytes, RecvBytes.Length, 0)

  strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes)

End While

Açıklamalar

Receive yöntemi verileri parametresine buffer okur ve başarıyla okunan bayt sayısını döndürür. Hem bağlantı odaklı hem de bağlantısız yuvalardan çağrı Receive yapabilirsiniz.

Bu aşırı yükleme yalnızca bir alma arabelleği, almak istediğiniz bayt sayısını ve gerekli SocketFlagsdeğeri sağlamanızı gerektirir.

Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak veya Accept çağırmadan önce gelen bir bağlantıyı kabul etmek için aramanız ConnectReceivegerekir. Receive yöntemi yalnızca veya Accept yönteminde Connect oluşturulan uzak konaktan gelen verileri okur. Bağlantısız bir protokol kullanıyorsanız yöntemini de kullanabilirsiniz ReceiveFrom . ReceiveFrom herhangi bir konaktan gelen verileri almanıza olanak sağlar.

Okuma için kullanılabilir veri yoksa, Receive yöntemi kullanılarak Socket.ReceiveTimeoutbir zaman aşımı değeri ayarlanmadığı sürece veriler kullanılabilir duruma gelene kadar engeller. Zaman aşımı değeri aşıldıysa, Receive çağrısı bir SocketExceptionoluşturur. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa, Receive yöntemi hemen tamamlanır ve bir SocketExceptionoluşturur. okuma için kullanılabilir veri olup olmadığını belirlemek için özelliğini kullanabilirsiniz Available . Available Sıfır olmadığında alma işleminizi yeniden deneyin.

Bağlantı odaklı SocketReceive bir kullanıyorsanız yöntemi, parametresi tarafından size belirtilen bayt sayısına kadar kullanılabilir olan kadar veri okur. Uzak ana bilgisayar yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve tüm kullanılabilir veriler alınırsa, Receive yöntem hemen tamamlanır ve sıfır bayt döndürür.

Bağlantısız Socketkullanıyorsanız, Receive yönteminde Connect belirttiğiniz hedef adresten kuyruğa alınan ilk veri birimini okur. Aldığınız veri birimi parametrenin boyutundan buffer büyükse, buffer iletinin ilk bölümüyle doldurulursa, fazla veriler kaybolur ve bir SocketException oluşturulur.

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.

Ayrıca bkz.

Şunlara uygulanır

Receive(Span<Byte>, SocketFlags)

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

Belirtilen SocketFlagskullanarak bir ilişkiliden Socket alma arabelleğine veri alır.

public:
 int Receive(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : Span<byte> * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Span(Of Byte), socketFlags As SocketFlags) As Integer

Parametreler

buffer
Span<Byte>

Alınan verilerin depolama konumu olan bayt aralığı.

socketFlags
SocketFlags

Gönderme ve alma davranışlarını belirten numaralandırma değerlerinin bit düzeyinde birleşimi.

Döndürülenler

Alınan bayt sayısı.

Özel durumlar

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

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

Açıklamalar

Receive yöntemi verileri buffer parametresine okur ve başarıyla okunan bayt sayısını döndürür. Hem bağlantı odaklı hem de bağlantısız yuvalardan çağrı Receive yapabilirsiniz.

Bu aşırı yükleme yalnızca alma arabelleği sağlamanızı gerektirir. Arabellek uzaklığı varsayılan olarak 0'a, boyut varsayılan olarak arabellek parametresinin uzunluğuna, SocketFlags değer de varsayılan olarak olarak ayarlanır None.

Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak veya Accept çağırmadan önce gelen bir bağlantıyı kabul etmek için aramanız ConnectReceivegerekir. Receive yöntemi yalnızca veya Accept yönteminde Connect oluşturulan uzak konaktan gelen verileri okur. Bağlantısız bir protokol kullanıyorsanız yöntemini de kullanabilirsiniz ReceiveFrom . ReceiveFrom herhangi bir konaktan gelen verileri almanıza olanak sağlar.

Okuma için kullanılabilir veri yoksa, Receive yöntemi kullanılarak Socket.ReceiveTimeoutbir zaman aşımı değeri ayarlanmadığı sürece veriler kullanılabilir duruma gelene kadar engeller. Zaman aşımı değeri aşıldığında çağrısı Receive bir SocketExceptionoluşturur. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa yöntemi Receive hemen tamamlanır ve bir SocketExceptionoluşturur. okuma için kullanılabilir veri olup olmadığını belirlemek için özelliğini kullanabilirsiniz Available . Available Sıfır olmadığında alma işlemini yeniden deneyin.

Bağlantı odaklı SocketReceive bir kullanıyorsanız yöntemi, arabellek boyutuna kadar mümkün olduğunca çok veri okur. Uzak ana bilgisayar yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve tüm kullanılabilir veriler alınırsa, Receive yöntem hemen tamamlanır ve sıfır bayt döndürür.

Bağlantısız Socketkullanıyorsanız, Receive yönteminde Connect belirttiğiniz hedef adresten kuyruğa alınan ilk veri birimini okur. Aldığınız veri birimi parametrenin boyutundan buffer büyükse, buffer iletinin ilk bölümüyle doldurulur, fazla veriler kaybolur ve bir SocketException oluşturulur.

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.

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

Ayrıca bkz.

Şunlara uygulanır

Receive(Byte[], Int32, Int32, SocketFlags)

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

Belirtilen bayt sayısını, belirtilen kullanarak bir sınırdan Socket alma arabelleğinin belirtilen uzaklık konumuna SocketFlagsalır.

public:
 int Receive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * int * int * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags) As Integer

Parametreler

buffer
Byte[]

Alınan verilerin depolama konumu olan tür Byte dizisi.

offset
Int32

Alınan verileri depolamak buffer için konumu.

size
Int32

Alınacak bayt sayısı.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

Döndürülenler

Alınan bayt sayısı.

Özel durumlar

buffer, null değeridir.

offset 0'dan küçüktür.

-veya-

offset uzunluğundan bufferbüyük.

-veya-

size 0'dan küçüktür.

-veya-

size parametresinin değerinden bufferoffset daha uzundur.

socketFlags geçerli bir değer bileşimi değildir.

-veya-

LocalEndPoint Özelliği ayarlanmadı.

-veya-

öğesine erişilirken Socketbir işletim sistemi hatası oluşur.

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

Örnekler

Aşağıdaki kod örneği, bağlı Socketbir üzerinde veri almadan önce veri arabelleği, uzaklık, boyut ve yuva bayrağını belirtir.

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

Açıklamalar

Receive yöntemi verileri buffer parametresine okur ve başarıyla okunan bayt sayısını döndürür. Hem bağlantı odaklı hem de bağlantısız yuvalardan çağrı Receive yapabilirsiniz.

Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak veya Accept çağırmadan önce gelen bir bağlantıyı kabul etmek için aramanız ConnectReceivegerekir. Receive yöntemi yalnızca veya Accept yönteminde Connect oluşturulan uzak konaktan gelen verileri okur. Bağlantısız bir protokol kullanıyorsanız yöntemini de kullanabilirsiniz ReceiveFrom . ReceiveFrom herhangi bir konaktan gelen verileri almanıza olanak sağlar.

Okuma için kullanılabilir veri yoksa, Receive yöntemi kullanılarak Socket.ReceiveTimeoutbir zaman aşımı değeri ayarlanmadığı sürece veriler kullanılabilir duruma gelene kadar engeller. Zaman aşımı değeri aşıldıysa, Receive çağrısı bir SocketExceptionoluşturur. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa yöntemi Receive hemen tamamlanır ve bir SocketExceptionoluşturur. Yuvaya erişmeye çalışılırken bir hata oluştu. Aşağıdaki Açıklamalar'a bakın. okuma için kullanılabilir veri olup olmadığını belirlemek için özelliğini kullanabilirsiniz Available . Available Sıfır olmadığında alma işlemini yeniden deneyin.

Bağlantı odaklı SocketReceive bir kullanıyorsanız, yöntem boyut parametresi tarafından belirtilen bayt sayısına kadar kullanılabilir olan kadar veri okur. Uzak ana bilgisayar yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve tüm kullanılabilir veriler alınırsa, Receive yöntem hemen tamamlanır ve sıfır bayt döndürür.

Bağlantısız Socketkullanıyorsanız, Receive yönteminde Connect belirttiğiniz hedef adresten kuyruğa alınan ilk veri birimini okur. Aldığınız veri birimi parametrenin boyutundan buffer büyükse, buffer iletinin ilk bölümüyle doldurulursa, fazla veriler kaybolur ve bir SocketException oluşturulur.

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.

Ayrıca bkz.

Şunlara uygulanır

Receive(Byte[], SocketFlags)

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

Belirtilen SocketFlagskullanarak bir ilişkiliden Socket alma arabelleğine veri alır.

public:
 int Receive(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), socketFlags As SocketFlags) As Integer

Parametreler

buffer
Byte[]

Alınan verilerin depolama konumu olan tür Byte dizisi.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

Döndürülenler

Alınan bayt sayısı.

Özel durumlar

buffer, null değeridir.

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

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

Örnekler

Aşağıdaki kod örneği, SocketFlags bağlı Socketbir üzerinde veri almak için bir veri arabelleği belirtir.

// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
int SendReceiveTest2( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer and socket flags.
Public Shared Function SendReceiveTest2(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest2

Açıklamalar

Receive yöntemi verileri buffer parametresine okur ve başarıyla okunan bayt sayısını döndürür. Hem bağlantı odaklı hem de bağlantısız yuvalardan çağrı Receive yapabilirsiniz.

Bu aşırı yükleme yalnızca bir alma arabelleği ve gerekli SocketFlagssağlamanızı gerektirir. Arabellek uzaklığı varsayılan olarak 0'a, boyut da bayt parametresinin uzunluğuna varsayılan olarak ayarlanır.

Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak veya Accept çağırmadan önce gelen bir bağlantıyı kabul etmek için aramanız ConnectReceivegerekir. Receive yöntemi yalnızca veya Accept yönteminde Connect oluşturulan uzak konaktan gelen verileri okur. Bağlantısız bir protokol kullanıyorsanız yöntemini de kullanabilirsiniz ReceiveFrom . ReceiveFrom herhangi bir konaktan gelen verileri almanıza olanak sağlar.

Okuma için kullanılabilir veri yoksa, Receive veri kullanılabilir olana kadar yöntemi engeller. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa yöntemi Receive hemen tamamlanır ve bir SocketExceptionoluşturur. okuma için kullanılabilir veri olup olmadığını belirlemek için özelliğini kullanabilirsiniz Available . Available Sıfır olmadığında alma işleminizi yeniden deneyin.

Bağlantı odaklı Socketbir kullanıyorsanız, yöntemi arabellek boyutuna Receive kadar kullanılabilir olan kadar veri okur. Uzak ana bilgisayar yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve tüm kullanılabilir veriler alınırsa, Receive yöntem hemen tamamlanır ve sıfır bayt döndürür.

Bağlantısız Socketkullanıyorsanız, Receive yönteminde Connect belirttiğiniz hedef adresten ilk sıraya alınan veri birimini okur. Aldığınız veri birimi parametrenin boyutundan buffer büyükse, buffer iletinin ilk bölümüyle doldurulursa, fazla veriler kaybolur ve bir SocketException oluşturulur.

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.

Ayrıca bkz.

Şunlara uygulanır

Receive(Span<Byte>)

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

Bir sınırdan Socket alma arabelleğine veri alır.

public:
 int Receive(Span<System::Byte> buffer);
public int Receive (Span<byte> buffer);
member this.Receive : Span<byte> -> int
Public Function Receive (buffer As Span(Of Byte)) As Integer

Parametreler

buffer
Span<Byte>

Alınan verilerin depolama konumu olan bayt aralığı.

Döndürülenler

Alınan bayt sayısı.

Özel durumlar

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

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

Açıklamalar

Receive yöntemi verileri buffer parametresine okur ve başarıyla okunan bayt sayısını döndürür. Hem bağlantı odaklı hem de bağlantısız yuvalardan çağrı Receive yapabilirsiniz.

Bu aşırı yükleme yalnızca alma arabelleği sağlamanızı gerektirir. Arabellek uzaklığı varsayılan olarak 0'a, boyut varsayılan olarak arabellek parametresinin uzunluğuna, SocketFlags değer de varsayılan olarak olarak ayarlanır None.

Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak veya Accept çağırmadan önce gelen bir bağlantıyı kabul etmek için aramanız ConnectReceivegerekir. Receive yöntemi yalnızca veya Accept yönteminde Connect oluşturulan uzak konaktan gelen verileri okur. Bağlantısız bir protokol kullanıyorsanız yöntemini de kullanabilirsiniz ReceiveFrom . ReceiveFrom herhangi bir konaktan gelen verileri almanıza olanak sağlar.

Okuma için kullanılabilir veri yoksa, Receive yöntemi kullanılarak Socket.ReceiveTimeoutbir zaman aşımı değeri ayarlanmadığı sürece veriler kullanılabilir duruma gelene kadar engeller. Zaman aşımı değeri aşıldığında çağrısı Receive bir SocketExceptionoluşturur. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa yöntemi Receive hemen tamamlanır ve bir SocketExceptionoluşturur. okuma için kullanılabilir veri olup olmadığını belirlemek için özelliğini kullanabilirsiniz Available . Available Sıfır olmadığında alma işlemini yeniden deneyin.

Bağlantı odaklı SocketReceive bir kullanıyorsanız yöntemi, arabellek boyutuna kadar mümkün olduğunca çok veri okur. Uzak ana bilgisayar yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve tüm kullanılabilir veriler alınırsa, Receive yöntem hemen tamamlanır ve sıfır bayt döndürür.

Bağlantısız Socketkullanıyorsanız, Receive yönteminde Connect belirttiğiniz hedef adresten kuyruğa alınan ilk veri birimini okur. Aldığınız veri birimi parametrenin boyutundan buffer büyükse, buffer iletinin ilk bölümüyle doldurulur, fazla veriler kaybolur ve bir SocketException oluşturulur.

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.

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

Ayrıca bkz.

Şunlara uygulanır

Receive(IList<ArraySegment<Byte>>)

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

Bir sınırdan Socket alma arabellekleri listesine veri alır.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> -> int
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte))) As Integer

Parametreler

buffers
IList<ArraySegment<Byte>>

ArraySegment<T>Alınan verileri içeren türün Byte listesi.

Döndürülenler

Alınan bayt sayısı.

Özel durumlar

buffer parametresidirnull.

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

Açıklamalar

Bu yöntem buffers parametresine veri okur ve başarıyla okunan bayt sayısını döndürür. Hem bağlantı odaklı hem de bağlantısız yuvalardan çağrı yapabilirsiniz.

Bu aşırı yükleme, bir veya daha fazla alma arabelleği sağlamanızı gerektirir.

Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak veya Accept çağırmadan önce gelen bir bağlantıyı kabul etmek için aramanız ConnectReceivegerekir. Receive yöntemi yalnızca veya Accept yönteminde Connect kurulan uzak konak bağlantısından gelen verileri okur. Bağlantısız bir protokol kullanıyorsanız yöntemini de kullanabilirsiniz ReceiveFrom . ReceiveFrom herhangi bir konaktan gelen verileri almanıza olanak sağlar.

Okuma için kullanılabilir veri yoksa, kullanılarak Socket.ReceiveTimeoutbir zaman aşımı değeri ayarlanmadığı Receive sürece, veri kullanılabilir olana kadar yöntemi engeller. Zaman aşımı değeri aşılırsa, Receive çağrısı bir SocketExceptionoluşturur. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa yöntemi Receive hemen tamamlanır ve bir SocketExceptionoluşturur. Okuma için kullanılabilir veri olup olmadığını belirlemek için özelliğini kullanabilirsiniz Available . Sıfır olmayan bir değer olduğunda Available alma işlemini yeniden deneyin.

Bağlantı odaklı SocketReceive bir kullanıyorsanız yöntemi, arabellek boyutuna kadar mümkün olduğunca çok veri okur. Uzak ana bilgisayar yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve tüm kullanılabilir veriler alınmışsa, Receive yöntem hemen tamamlanır ve sıfır bayt döndürür.

Bağlantısız Socketkullanıyorsanız, Receive yönteminde Connect belirttiğiniz hedef adresten ilk sıraya alınan veri birimini okur. Aldığınız veri birimi parametrenin boyutundan buffers büyükse iletinin buffers ilk bölümüyle doldurulur, fazla veriler kaybolur ve bir SocketException oluşturulur.

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 Bu üye, uygulamanızda ağ izlemeyi etkinleştirdiğinizde izleme bilgilerini döndürür. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.

Şunlara uygulanır

Receive(Byte[])

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

Bir sınırdan Socket alma arabelleğine veri alır.

public:
 int Receive(cli::array <System::Byte> ^ buffer);
public int Receive (byte[] buffer);
member this.Receive : byte[] -> int
Public Function Receive (buffer As Byte()) As Integer

Parametreler

buffer
Byte[]

Alınan verilerin depolama konumu olan tür Byte dizisi.

Döndürülenler

Alınan bayt sayısı.

Özel durumlar

buffer, null değeridir.

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

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

Örnekler

Aşağıdaki kod örneği, bağlı Socketbir üzerindeki verileri alır.

// Displays sending with a connected socket
// using the overload that takes a buffer.
int SendReceiveTest1( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return ( e->ErrorCode );
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int i = server.Send(msg);
        Console.WriteLine("Sent {0} bytes.", i);

        // Get reply from the server.
        i = server.Receive(bytes);
        Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer.
Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        i = server.Receive(bytes)
        Console.WriteLine(Encoding.UTF8.GetString(bytes))
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest1

Açıklamalar

Receive yöntemi verileri buffer parametresine okur ve başarıyla okunan bayt sayısını döndürür. Hem bağlantı odaklı hem de bağlantısız yuvalardan çağrı Receive yapabilirsiniz.

Bu aşırı yükleme yalnızca alma arabelleği sağlamanızı gerektirir. Arabellek uzaklığı varsayılan olarak 0' a, boyut varsayılan olarak arabellek parametresinin uzunluğuna, SocketFlags değer ise varsayılan Noneolarak olur.

Bağlantı odaklı bir protokol kullanıyorsanız, uzak ana bilgisayar bağlantısı kurmak veya Accept çağırmadan önce gelen bir bağlantıyı kabul etmek için öğesini çağırmalısınız.ConnectReceive Receive yöntemi yalnızca veya Accept yönteminde Connect oluşturulan uzak konaktan gelen verileri okur. Bağlantısız bir protokol kullanıyorsanız yöntemini de kullanabilirsiniz ReceiveFrom . ReceiveFrom herhangi bir konaktan gelen verileri almanıza olanak sağlar.

Okuma için kullanılabilir veri yoksa, kullanılarak Socket.ReceiveTimeoutbir zaman aşımı değeri ayarlanmadığı Receive sürece, veri kullanılabilir olana kadar yöntemi engeller. Zaman aşımı değeri aşılırsa, Receive çağrısı bir SocketExceptionoluşturur. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa yöntemi Receive hemen tamamlanır ve bir SocketExceptionoluşturur. Okuma için kullanılabilir veri olup olmadığını belirlemek için özelliğini kullanabilirsiniz Available . Sıfır olmayan bir değer olduğunda Available alma işlemini yeniden deneyin.

Bağlantı odaklı SocketReceive bir kullanıyorsanız yöntemi, arabellek boyutuna kadar mümkün olduğunca çok veri okur. Uzak ana bilgisayar yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve tüm kullanılabilir veriler alınmışsa, Receive yöntem hemen tamamlanır ve sıfır bayt döndürür.

Bağlantısız Socketkullanıyorsanız, Receive yönteminde Connect belirttiğiniz hedef adresten kuyruğa alınan ilk veri birimini okur. Aldığınız veri birimi parametrenin boyutundan buffer büyükse iletinin buffer ilk bölümüyle doldurulur, fazla veriler kaybolur ve bir SocketException oluşturulur.

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.

Ayrıca bkz.

Şunlara uygulanır

Receive(IList<ArraySegment<Byte>>, SocketFlags)

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

Belirtilen SocketFlagskullanarak alma arabellekleri listesine bağlı Socket olan bir veri alır.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Integer

Parametreler

buffers
IList<ArraySegment<Byte>>

Alınan verileri içeren türün Byte s listesiArraySegment<T>.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

Döndürülenler

Alınan bayt sayısı.

Özel durumlar

buffers, null değeridir.

-veya-

buffers. Sayı sıfırdır.

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

Örnekler

Aşağıdaki kod örneği, bağlı Socketbir üzerinde verilerin nasıl alınduğunu gösterir.


// Build the buffers for the receive.
List<ArraySegment<Byte> >^ receiveBuffers = 
    gcnew List<ArraySegment<Byte> >(2);

array<Byte>^ bigBuffer = gcnew array<Byte>(1024);

// Specify the first buffer segment (2 bytes, starting 
// at the 4th element of bigBuffer)
receiveBuffers->Add(ArraySegment<Byte>(bigBuffer, 4, 2));

// Specify the second buffer segment (500 bytes, starting
// at the 20th element of bigBuffer)
receiveBuffers->Add(
    ArraySegment<Byte>(bigBuffer, 20, 500));

tcpSocket->Receive(receiveBuffers);

Console::WriteLine("{0}", 
    asciiEncoding->GetString(bigBuffer));

// Build the buffers for the receive.
List<ArraySegment<byte>> recvBuffers =
                         new List<ArraySegment<byte>>(2);

byte[] bigBuffer = new byte[1024];

// Specify the first buffer segment (2 bytes, starting
// at the 4th element of bigBuffer)
recvBuffers.Add(new ArraySegment<byte>(bigBuffer, 4, 2));

// Specify the second buffer segment (500 bytes, starting
// at the 20th element of bigBuffer)
recvBuffers.Add(new ArraySegment<byte>(bigBuffer, 20, 500));

int bytesReceived = mySocket.Receive(recvBuffers);

Console.WriteLine("{0}", ASCII.GetString(bigBuffer));

Açıklamalar

Bu yöntem verileri parametresine buffers okur ve başarıyla okunan bayt sayısını döndürür. Hem bağlantı odaklı hem de bağlantısız yuvalardan çağrı yapabilirsiniz.

Bu aşırı yükleme, bir veya daha fazla alma arabelleği sağlamanızı gerektirir. Değer SocketFlags varsayılan olarak olarak Nonegösterilir.

Bağlantı odaklı bir protokol kullanıyorsanız, uzak ana bilgisayar bağlantısı kurmak veya Accept çağırmadan önce gelen bir bağlantıyı kabul etmek için öğesini çağırmalısınız.ConnectReceive Receive yöntemi yalnızca veya Accept yönteminde Connect kurulan uzak konak bağlantısından gelen verileri okur. Bağlantısız bir protokol kullanıyorsanız yöntemini de kullanabilirsiniz ReceiveFrom . ReceiveFrom herhangi bir konaktan gelen verileri almanıza olanak sağlar.

Okuma için kullanılabilir veri yoksa, kullanılarak Socket.ReceiveTimeoutbir zaman aşımı değeri ayarlanmadığı Receive sürece, veri kullanılabilir olana kadar yöntemi engeller. Zaman aşımı değeri aşıldıysa, Receive çağrısı bir SocketExceptionoluşturur. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa yöntemi Receive hemen tamamlanır ve bir SocketExceptionoluşturur. Okuma için kullanılabilir veri olup olmadığını belirlemek için özelliğini kullanabilirsiniz Available . Sıfır olmayan bir değer olduğunda Available alma işlemini yeniden deneyin.

Bağlantı odaklı SocketReceive bir kullanıyorsanız yöntemi, arabellek boyutuna kadar mümkün olduğunca çok veri okur. Uzak ana bilgisayar yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve tüm kullanılabilir veriler alınmışsa, Receive yöntem hemen tamamlanır ve sıfır bayt döndürür.

Bağlantısız Socketkullanıyorsanız, Receive yönteminde Connect belirttiğiniz hedef adresten ilk sıraya alınan veri birimini okur. Aldığınız veri birimi parametrenin boyutundan buffers büyükse iletinin buffers ilk bölümüyle doldurulur, fazla veriler kaybolur ve bir SocketException oluşturulur.

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.

Ayrıca bkz.

Şunlara uygulanır