Socket.ReceiveFrom 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.
Bir veri birimi alır ve kaynak uç noktayı depolar.
Aşırı Yüklemeler
ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint) |
Belirtilen bayt sayısını belirtilen kullanarak veri arabelleğine SocketFlagsalır ve uç noktayı depolar. |
ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint) |
Belirtilen bayt sayısını veri arabelleğinin SocketFlagsbelirtilen konumuna alır ve uç noktayı depolar. |
ReceiveFrom(Span<Byte>, SocketFlags, EndPoint) |
Belirtilen SocketFlagsöğesini kullanarak veri arabelleğine bir veri birimi alır ve uç noktayı depolar. |
ReceiveFrom(Byte[], SocketFlags, EndPoint) |
Belirtilen SocketFlagsöğesini kullanarak veri arabelleğine bir veri birimi alır ve uç noktayı depolar. |
ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress) |
Belirtilen SocketFlagsöğesini kullanarak veri arabelleğine bir veri birimi alır ve uç noktayı depolar. |
ReceiveFrom(Span<Byte>, EndPoint) |
Veri arabelleğine bir veri birimi alır ve uç noktayı depolar. |
ReceiveFrom(Byte[], EndPoint) |
Veri arabelleğine bir veri birimi alır ve uç noktayı depolar. |
ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
Belirtilen bayt sayısını belirtilen kullanarak veri arabelleğine SocketFlagsalır ve uç noktayı depolar.
public:
int ReceiveFrom(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * int * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint) As Integer
Parametreler
- size
- Int32
Alınacak bayt sayısı.
- socketFlags
- SocketFlags
Değerlerin bit düzeyinde birleşimi SocketFlags .
- remoteEP
- EndPoint
Başarılı almada güncelleştirilecek uzak konağın uç noktasıyla aynı türde bir EndPoint başvuru.
Döndürülenler
Alınan bayt sayısı.
Özel durumlar
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, uzak bir konaktan bağlantısız bir veri birimi alır. Arabellek boyutu ve SocketFlags yöntemine ReceiveFrom geçirilir.
static void ReceiveFrom3()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
// Creates an IPEndPoint to capture the identity of the sending host.
IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
// Binding is required with ReceiveFrom calls.
s->Bind( endPoint );
array<Byte>^ msg = gcnew array<Byte>(256);
Console::WriteLine( "SWaiting to receive datagrams from client..." );
// This call blocks.
s->ReceiveFrom( msg, msg->Length, SocketFlags::None, senderRemote );
s->Close();
}
public static void ReceiveFrom3()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
// Creates an IPEndPoint to capture the identity of the sending host.
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint senderRemote = (EndPoint)sender;
// Binding is required with ReceiveFrom calls.
s.Bind(endPoint);
byte[] msg = new Byte[256];
Console.WriteLine("Waiting to receive datagrams from client...");
// This call blocks.
s.ReceiveFrom(msg, msg.Length, SocketFlags.None, ref senderRemote);
s.Close();
}
Public Shared Sub ReceiveFrom3()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
' Creates an IPEndPoint to capture the identity of the sending host.
Dim sender As New IPEndPoint(IPAddress.Any, 0)
Dim senderRemote As EndPoint = CType(sender, EndPoint)
' Binding is required with ReceiveFrom calls.
s.Bind(endPoint)
Dim msg() As Byte = New [Byte](255) {}
Console.WriteLine("Waiting to receive datagrams from client...")
' This call blocks.
s.ReceiveFrom(msg, msg.Length, SocketFlags.None, senderRemote)
s.Close()
End Sub
Açıklamalar
ReceiveFrom yöntemi verileri parametresine buffer
okur, başarıyla okunan bayt sayısını döndürür ve verilerin gönderildiği uzak konak uç noktasını yakalar. Bu yöntem, bilinmeyen bir konaktan veya birden çok konaktan bağlantısız veri birimleri almayı amaçlıyorsanız yararlıdır.
Bu aşırı yükleme yalnızca bir alma arabelleği, almak istediğiniz bayt sayısını, gerekli SocketFlagsve uzak konağı temsil eden bir EndPoint sağlamanızı gerektirir. Arabellek uzaklığı varsayılan olarak 0'dır.
Bağlantısız protokollerle, ReceiveFrom yerel ağ arabelleğine alınan ilk sıralanmış veri birimi okunur. Aldığınız veri birimi boyutundan buffer
ReceiveFrom büyükse, yöntemi iletinin mümkün olduğunca büyük bir kısmını doldurur buffer
ve bir SocketExceptionoluşturur. Güvenilir olmayan bir protokol kullanıyorsanız fazla veriler kaybolur. Güvenilir bir protokol kullanıyorsanız, fazla veriler hizmet sağlayıcısı tarafından korunur ve yöntemini yeterince büyük bir arabellekle çağırarak ReceiveFrom alabilirsiniz.
Okuma için kullanılabilir veri yoksa, ReceiveFrom veri kullanılabilir olana kadar yöntemi engeller. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa yöntemi ReceiveFrom 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ısız protokoller için tasarlanmış olsa ReceiveFrom da, bağlantı odaklı bir protokol de kullanabilirsiniz. Bunu yapmayı seçerseniz, önce yöntemini çağırarak uzak konak bağlantısı kurmanız veya yöntemini çağırarak ConnectAccept gelen uzak konak bağlantısını kabul etmeniz gerekir. yöntemini çağırmadan ReceiveFrom önce bağlantı kurmaz veya kabul ederseniz bir SocketExceptionalırsınız. Yöntemini çağırmadan ReceiveFrom önce bağlantısız bir protokol için varsayılan uzak konak da oluşturabilirsiniz.
Bağlantı odaklı yuvalarda, ReceiveFrom 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, ReceiveFrom yöntem hemen tamamlanır ve sıfır bayt döndürür.
Not
çağırmadan ReceiveFromönce yöntemini kullanarak Bind öğesini yerel bir uç noktaya açıkça bağlamanız Socket gerekir. Bunu yapmazsanız, ReceiveFrom bir SocketExceptionoluşturur. 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
AddressFamily içinde kullanılan öğesinin EndPoint içinde ReceiveFrom kullanılan SendToile AddressFamily eşleşmesi EndPoint gerekir.
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)
- Receive(Byte[], Int32, SocketFlags)
- Available
- Shutdown(SocketShutdown)
- Close()
- SocketFlags
Şunlara uygulanır
ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
Belirtilen bayt sayısını veri arabelleğinin SocketFlagsbelirtilen konumuna alır ve uç noktayı depolar.
public:
int ReceiveFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * int * int * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint) 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 .
- remoteEP
- EndPoint
Başarılı almada güncelleştirilecek uzak konağın uç noktasıyla aynı türde bir EndPoint başvuru.
Döndürülenler
Alınan bayt sayısı.
Özel durumlar
offset
0'dan küçüktür.
-veya-
offset
uzunluğundan buffer
büyük.
-veya-
size
0'dan küçüktür.
-veya-
size
uzaklık parametresinin buffer
değeri eksi değerinden büyük.
socketFlags
geçerli bir değer bileşimi değildir.
-veya-
LocalEndPoint Özelliği ayarlanmadı.
-veya-
Yuvaya erişmeye çalışılırken bir hata oluştu.
Kapatılmış Socket .
Örnekler
Aşağıdaki kod örneği, uzak bir konaktan bağlantısız bir veri birimi alır. Uzaklık, arabellek boyutu ve SocketFlags yöntemine ReceiveFrom geçirilir.
static void ReceiveFrom4()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
// Creates an IpEndPoint to capture the identity of the sending host.
IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
// Binding is required with ReceiveFrom calls.
s->Bind( endPoint );
array<Byte>^ msg = gcnew array<Byte>(256);
Console::WriteLine( "SWaiting to receive datagrams from client..." );
// This call blocks.
s->ReceiveFrom( msg, 0, msg->Length, SocketFlags::None, senderRemote );
s->Close();
}
public static void ReceiveFrom4()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
// Creates an IpEndPoint to capture the identity of the sending host.
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint senderRemote = (EndPoint)sender;
// Binding is required with ReceiveFrom calls.
s.Bind(endPoint);
byte[] msg = new Byte[256];
Console.WriteLine("Waiting to receive datagrams from client...");
// This call blocks.
s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, ref senderRemote);
s.Close();
}
Public Shared Sub ReceiveFrom4()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
' Creates an IpEndPoint to capture the identity of the sending host.
Dim sender As New IPEndPoint(IPAddress.Any, 0)
Dim senderRemote As EndPoint = CType(sender, EndPoint)
' Binding is required with ReceiveFrom calls.
s.Bind(endPoint)
Dim msg() As Byte = New [Byte](255) {}
Console.WriteLine("Waiting to receive datagrams from client...")
' This call blocks.
s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, senderRemote)
s.Close()
End Sub
Açıklamalar
ReceiveFrom yöntemi verileri parametresine buffer
okur, başarıyla okunan bayt sayısını döndürür ve verilerin gönderildiği uzak konak uç noktasını yakalar. Bu yöntem, bilinmeyen bir konaktan veya birden çok konaktan bağlantısız veri birimleri almayı amaçlıyorsanız yararlıdır.
Bağlantısız protokollerle, ReceiveFrom yerel ağ arabelleğine alınan ilk sıralanmış veri birimi okunur. Aldığınız veri birimi boyutundan buffer
ReceiveFrom büyükse, yöntemi iletinin mümkün olduğunca büyük bir kısmını doldurur buffer
ve bir SocketExceptionoluşturur. Güvenilir olmayan bir protokol kullanıyorsanız fazla veriler kaybolur. Güvenilir bir protokol kullanıyorsanız, fazla veriler hizmet sağlayıcısı tarafından korunur ve yöntemini yeterince büyük bir arabellekle çağırarak ReceiveFrom alabilirsiniz.
Okuma için kullanılabilir veri yoksa, ReceiveFrom veri kullanılabilir olana kadar yöntemi engeller. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa yöntemi ReceiveFrom 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ısız protokoller için tasarlanmış olsa ReceiveFrom da, bağlantı odaklı bir protokol de kullanabilirsiniz. Bunu yapmayı seçerseniz, önce yöntemini çağırarak uzak konak bağlantısı kurmanız veya yöntemini çağırarak ConnectAccept gelen uzak konak bağlantısını kabul etmeniz gerekir. yöntemini çağırmadan ReceiveFrom önce bağlantı kurmaz veya kabul ederseniz bir SocketExceptionalırsınız. Yöntemini çağırmadan ReceiveFrom önce bağlantısız bir protokol için varsayılan uzak konak da oluşturabilirsiniz.
Bağlantı odaklı yuvalarda, ReceiveFrom parametresi tarafından size
belirtilen bayt miktarına kadar kullanılabilir olan veri miktarı kadar veri okur. Uzak ana bilgisayar yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve tüm kullanılabilir veriler Alındı ise, ReceiveFrom yöntem hemen tamamlanır ve sıfır bayt döndürür.
Not
çağırmadan ReceiveFromönce yöntemini kullanarak Bind öğesini yerel bir uç noktaya açıkça bağlamanız Socket gerekir. Bunu yapmazsanız, ReceiveFrom bir SocketExceptionoluşturur. 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
AddressFamily içinde kullanılan öğesinin EndPoint içinde ReceiveFrom kullanılan SendToile AddressFamily eşleşmesi EndPoint gerekir.
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)
- Receive(Byte[], Int32, SocketFlags)
- Available
- Shutdown(SocketShutdown)
- Close()
- SocketFlags
Şunlara uygulanır
ReceiveFrom(Span<Byte>, SocketFlags, EndPoint)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
Belirtilen SocketFlagsöğesini kullanarak veri arabelleğine bir veri birimi alır ve uç noktayı depolar.
public:
int ReceiveFrom(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : Span<byte> * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Span(Of Byte), socketFlags As SocketFlags, ByRef remoteEP As EndPoint) As Integer
Parametreler
- socketFlags
- SocketFlags
Değerlerin bit düzeyinde birleşimi SocketFlags .
- remoteEP
- EndPoint
Başarılı almada güncelleştirilecek uzak konağın uç noktasıyla aynı türde bir EndPoint başvuru.
Döndürülenler
Alınan bayt sayısı.
Özel durumlar
remoteEP
, null
değeridir.
Yuvaya erişmeye çalışılırken bir hata oluştu.
Kapatılmış Socket .
Şunlara uygulanır
ReceiveFrom(Byte[], SocketFlags, EndPoint)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
Belirtilen SocketFlagsöğesini kullanarak veri arabelleğine bir veri birimi alır ve uç noktayı depolar.
public:
int ReceiveFrom(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), socketFlags As SocketFlags, ByRef remoteEP As EndPoint) As Integer
Parametreler
- socketFlags
- SocketFlags
Değerlerin bit düzeyinde birleşimi SocketFlags .
- remoteEP
- EndPoint
Başarılı almada güncelleştirilecek uzak konağın uç noktasıyla aynı türde bir EndPoint başvuru.
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.
Örnekler
Aşağıdaki kod örneği, uzak bir konaktan bağlantısız bir veri birimi alır. SocketFlags yöntemine ReceiveFrom geçirilir.
static void ReceiveFrom2()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
// Creates an IpEndPoint to capture the identity of the sending host.
IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
// Binding is required with ReceiveFrom calls.
s->Bind( endPoint );
array<Byte>^ msg = gcnew array<Byte>(256);
Console::WriteLine( "Waiting to receive datagrams from client..." );
// This call blocks.
s->ReceiveFrom( msg, SocketFlags::None, senderRemote );
s->Close();
}
public static void ReceiveFrom2()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
// Creates an IpEndPoint to capture the identity of the sending host.
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint senderRemote = (EndPoint)sender;
// Binding is required with ReceiveFrom calls.
s.Bind(endPoint);
byte[] msg = new Byte[256];
Console.WriteLine("Waiting to receive datagrams from client...");
// This call blocks.
s.ReceiveFrom(msg, SocketFlags.None, ref senderRemote);
s.Close();
}
Public Shared Sub ReceiveFrom2()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
' Creates an IpEndPoint to capture the identity of the sending host.
Dim sender As New IPEndPoint(IPAddress.Any, 0)
Dim senderRemote As EndPoint = CType(sender, EndPoint)
' Binding is required with ReceiveFrom calls.
s.Bind(endPoint)
Dim msg() As Byte = New [Byte](255) {}
Console.WriteLine("Waiting to receive datagrams from client...")
' This call blocks.
s.ReceiveFrom(msg, SocketFlags.None, senderRemote)
s.Close()
End Sub
Açıklamalar
ReceiveFrom yöntemi verileri parametresine buffer
okur, başarıyla okunan bayt sayısını döndürür ve verilerin gönderildiği uzak konak uç noktasını yakalar. Bu yöntem, bilinmeyen bir konaktan veya birden çok konaktan bağlantısız veri birimleri almayı amaçlıyorsanız yararlıdır.
Bu aşırı yükleme yalnızca bir alma arabelleği, gerekli SocketFlagsve uzak konağı temsil eden bir EndPoint sağlamanızı gerektirir. Uzaklık varsayılan olarak 0,boyut ise arabellek parametresinin uzunluğuna varsayılan olarak ayarlanır.
Not
çağırmadan ReceiveFromönce yöntemini kullanarak Bind öğesini yerel bir uç noktaya açıkça bağlamanız Socket gerekir. Bunu yapmazsanız, ReceiveFrom bir SocketExceptionoluşturur.
Bağlantısız protokollerle, ReceiveFrom yerel ağ arabelleğine alınan ilk sıralanmış veri birimi okunur. Aldığınız veri birimi boyutundan buffer
ReceiveFrom büyükse, yöntemi iletinin mümkün olduğunca büyük bir kısmını doldurur buffer
ve bir SocketExceptionoluşturur. Güvenilir olmayan bir protokol kullanıyorsanız fazla veriler kaybolur. Güvenilir bir protokol kullanıyorsanız, fazla veriler hizmet sağlayıcısı tarafından korunur ve yöntemini yeterince büyük bir arabellekle çağırarak ReceiveFrom alabilirsiniz.
Okuma için kullanılabilir veri yoksa, ReceiveFrom veri kullanılabilir olana kadar yöntemi engeller. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa yöntemi ReceiveFrom 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ısız protokoller için tasarlanmış olsa ReceiveFrom da, bağlantı odaklı bir protokol de kullanabilirsiniz. Bunu yapmayı seçerseniz, önce yöntemini çağırarak uzak konak bağlantısı kurmanız veya yöntemini çağırarak ConnectAccept gelen uzak konak bağlantısını kabul etmeniz gerekir. yöntemini çağırmadan ReceiveFrom önce bağlantı kurmaz veya kabul ederseniz bir SocketExceptionalırsınız. Yöntemini çağırmadan ReceiveFrom önce bağlantısız bir protokol için varsayılan uzak konak da oluşturabilirsiniz.
Bağlantı odaklı yuvalarda, ReceiveFrom boyutuna buffer
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ındı ise, ReceiveFrom yöntem hemen tamamlanır ve sıfır bayt döndürür.
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
AddressFamily içinde kullanılan öğesinin EndPoint içinde ReceiveFrom kullanılan SendToile AddressFamily eşleşmesi EndPoint gerekir.
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)
- Receive(Byte[], Int32, SocketFlags)
- Available
- Shutdown(SocketShutdown)
- Close()
- SocketFlags
Şunlara uygulanır
ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
Belirtilen SocketFlagsöğesini kullanarak veri arabelleğine bir veri birimi alır ve uç noktayı depolar.
public:
int ReceiveFrom(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::SocketAddress ^ receivedAddress);
public int ReceiveFrom (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress receivedAddress);
member this.ReceiveFrom : Span<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress -> int
Public Function ReceiveFrom (buffer As Span(Of Byte), socketFlags As SocketFlags, receivedAddress As SocketAddress) As Integer
Parametreler
- socketFlags
- SocketFlags
Değerlerin bit düzeyinde birleşimi SocketFlags .
- receivedAddress
- SocketAddress
SocketAddress Bu yöntem döndürdüğünde uzak eş değeriyle güncelleştirilen bir örnek.
Döndürülenler
Alınan bayt sayısı.
Özel durumlar
receivedAddress
, null
değeridir.
Yuvaya erişmeye çalışılırken bir hata oluştu.
Kapatılmış Socket .
Şunlara uygulanır
ReceiveFrom(Span<Byte>, EndPoint)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
Veri arabelleğine bir veri birimi alır ve uç noktayı depolar.
public:
int ReceiveFrom(Span<System::Byte> buffer, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (Span<byte> buffer, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : Span<byte> * EndPoint -> int
Public Function ReceiveFrom (buffer As Span(Of Byte), ByRef remoteEP As EndPoint) As Integer
Parametreler
- remoteEP
- EndPoint
Başarılı almada güncelleştirilecek uzak konağın uç noktasıyla aynı türde bir EndPoint başvuru.
Döndürülenler
Alınan bayt sayısı.
Özel durumlar
remoteEP
, null
değeridir.
Yuvaya erişmeye çalışılırken bir hata oluştu.
Kapatılmış Socket .
Şunlara uygulanır
ReceiveFrom(Byte[], EndPoint)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
Veri arabelleğine bir veri birimi alır ve uç noktayı depolar.
public:
int ReceiveFrom(cli::array <System::Byte> ^ buffer, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), ByRef remoteEP As EndPoint) As Integer
Parametreler
- remoteEP
- EndPoint
Başarılı almada güncelleştirilecek uzak konağın uç noktasıyla aynı türde bir EndPoint başvuru.
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.
Örnekler
Aşağıdaki kod örneği, uzak bir konaktan bağlantısız bir veri birimi alır.
static void ReceiveFrom1()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
// Creates an IPEndPoint to capture the identity of the sending host.
IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
// Binding is required with ReceiveFrom calls.
s->Bind( endPoint );
array<Byte>^ msg = gcnew array<Byte>(256);
Console::WriteLine( "Waiting to receive datagrams from client..." );
// This call blocks.
s->ReceiveFrom( msg, senderRemote );
s->Close();
}
public static void ReceiveFrom1()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
// Creates an IPEndPoint to capture the identity of the sending host.
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint senderRemote = (EndPoint)sender;
// Binding is required with ReceiveFrom calls.
s.Bind(endPoint);
byte[] msg = new Byte[256];
Console.WriteLine("Waiting to receive datagrams from client...");
// This call blocks.
s.ReceiveFrom(msg, ref senderRemote);
s.Close();
}
Public Shared Sub ReceiveFrom1()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
' Creates an IPEndPoint to capture the identity of the sending host.
Dim sender As New IPEndPoint(IPAddress.Any, 0)
Dim senderRemote As EndPoint = CType(sender, EndPoint)
' Binding is required with ReceiveFrom calls.
s.Bind(endPoint)
Dim msg() As Byte = New [Byte](255) {}
Console.WriteLine("Waiting to receive datagrams from client...")
' This call blocks.
s.ReceiveFrom(msg, senderRemote)
s.Close()
End Sub
Açıklamalar
ReceiveFrom yöntemi verileri parametresine buffer
okur, başarıyla okunan bayt sayısını döndürür ve verilerin gönderildiği uzak konak uç noktasını yakalar. Bu yöntem, bilinmeyen bir konaktan veya birden çok konaktan bağlantısız veri birimleri almayı amaçlıyorsanız yararlıdır.
Bu aşırı yükleme yalnızca uzak konağı temsil eden bir alma buffer
ve EndPoint sağlamanızı gerektirir. Arabellek uzaklığı varsayılan olarak 0'dır. Boyut varsayılan olarak parametresinin uzunluğuna buffer
, değer ise socketFlags
varsayılan olarak değerine ayarlanır None.
Not
çağırmadan ReceiveFromönce yöntemini kullanarak Bind öğesini yerel bir uç noktaya açıkça bağlamanız Socket gerekir. Bunu yapmazsanız, ReceiveFrom bir SocketExceptionoluşturur.
Bağlantısız protokollerle, ReceiveFrom yerel ağ arabelleğine alınan ilk sıralanmış veri birimi okunur. Aldığınız veri birimi boyutundan buffer
ReceiveFrom büyükse, yöntemi iletinin mümkün olduğunca büyük bir kısmını doldurur buffer
ve bir SocketExceptionoluşturur. Güvenilir olmayan bir protokol kullanıyorsanız fazla veriler kaybolur. Güvenilir bir protokol kullanıyorsanız, fazla veriler hizmet sağlayıcısı tarafından korunur ve yeterince büyük bir arabellekle yöntemini çağırarak ReceiveFrom bunu alabilirsiniz.
Okuma için kullanılabilir veri yoksa, ReceiveFrom veri kullanılabilir olana kadar yöntemi engeller. Engelleyici olmayan moddaysanız ve protokol yığını arabelleğinde kullanılabilir veri yoksa yöntemi ReceiveFrom 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ısız protokoller için tasarlanmış olsa ReceiveFrom da, bağlantı odaklı bir protokol de kullanabilirsiniz. Bunu yapmayı seçerseniz, önce yöntemini çağırarak bir uzak konak bağlantısı kurmanız veya yöntemini çağırarak ConnectAccept gelen uzak konak bağlantısını kabul etmelisiniz. yöntemini çağırmadan ReceiveFrom önce bir bağlantı kurmaz veya kabul ederseniz, bir SocketExceptionalırsınız. Yöntemini çağırmadan ReceiveFrom önce bağlantısız bir protokol için varsayılan uzak konak da oluşturabilirsiniz.
Bağlantı odaklı yuvalarda, ReceiveFrom boyutuna buffer
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ınmışsa, ReceiveFrom yöntem hemen tamamlanır ve sıfır bayt döndürür.
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
AddressFamily içinde ReceiveFrom kullanılan öğesinin EndPoint içinde kullanılan SendToile EndPoint eşleşmesi AddressFamily gerekir.
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.