Socket.Receive Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
İ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
- 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 buffer
büyüktür.
-veya-
size
0'dan küçüktür.
-veya-
size
, parametresinin buffer
değeri eksi değerinden offset
büyük.
Kapatılmış Socket .
Ç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.
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Ş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
- 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.
Kapatılmış Socket .
Ç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.
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Ş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
Yuvaya erişmeye çalışılırken bir hata oluştu.
Kapatılmış Socket .
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.
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Ş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
- 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 buffer
aşıyor.
Yuvaya erişmeye çalışılırken bir hata oluştu.
Kapatılmış Socket .
Çağrı yığınındaki bir çağıranın gerekli izinleri yok.
Örnekler
Aşağıdakiler dosyasında bulunan buffer
verileri 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.
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Ş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
- 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.
Kapatılmış Socket .
Ç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.
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Ş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
- 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 buffer
büyük.
-veya-
size
0'dan küçüktür.
-veya-
size
parametresinin değerinden buffer
offset
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.
Kapatılmış Socket .
Ç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.
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Ş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
- 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.
Kapatılmış Socket .
Ç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.
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Ş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
Döndürülenler
Alınan bayt sayısı.
Özel durumlar
Yuvaya erişmeye çalışılırken bir hata oluştu.
Kapatılmış Socket .
Ç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.
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Ş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.
Kapatılmış Socket .
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
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.
Kapatılmış Socket .
Ç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.
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Ş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
Yuvaya erişmeye çalışılırken bir hata oluştu.
Kapatılmış Socket .
Ö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.
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()