Aracılığıyla paylaş


Socket.ReceiveFrom Yöntem

Tanım

Bir veri birimi alır ve kaynak uç noktayı depolar.

Aşırı Yüklemeler

Name Description
ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)

Belirtilen bayt sayısını veri arabelleğine SocketFlagsalır ve uç noktayı depolar.

ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)

Belirtilen veri arabelleğinin SocketFlagsbelirtilen konumuna belirtilen sayıda veri 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
Kaynak:
Socket.cs
Kaynak:
Socket.cs

Belirtilen bayt sayısını 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

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 .

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

buffer, null'e eşittir.

-veya-

remoteEP, null'e eşittir.

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

-veya-

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

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, uzak bir konaktan bağlantısız bir veri birimi alır. Arabellek boyutu ve SocketFlags yöntemine ReceiveFrom geçirilir.

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. Bilinmeyen bir konaktan veya birden çok konaktan bağlantısız veri birimleri almak istiyorsanız bu yöntem kullanışlı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 bufferReceiveFrom 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, ReceiveFrom yöntemi hemen tamamlanır ve bir SocketExceptionoluşturur. Veri okuma Available için kullanılabilir olup olmadığını belirlemek için özelliğini kullanabilirsiniz. Available Sıfır olmayan bir durumdayken 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 etmeniz gerekir. yöntemini çağırmadan ReceiveFrom önce bağlantı kurmaz veya kabul ederseniz, bir SocketExceptionalırsınız. Ayrıca, 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 konak yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve kullanılabilir tüm veriler alınırsa, ReceiveFrom yöntem hemen tamamlanır ve sıfır bayt döndürür.

Uyarı

çağrısından ReceiveFromönce yöntemini kullanarak Bind öğesini yerel bir uç noktaya açıkça bağlamanız Socket gerekir. Bunu yapmazsanız, ReceiveFrom bir SocketExceptionatar. bir SocketExceptionalırsanız, özelliğini kullanarak SocketException.ErrorCode belirli bir hata kodunu alın. 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.

Uyarı

AddressFamily içinde ReceiveFrom kullanılan öğesinin EndPoint içinde kullanılan SendToile EndPoint eşleşmesi AddressFamily gerekir.

Uyarı

Bu üye, uygulamanızda ağ izlemeyi etkinleştirdiğinizde izleme bilgilerini döndürür. Daha fazla bilgi için bkz. .NET Framework'te Ağ İzleme.

Ayrıca bkz.

Şunlara uygulanır

ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)

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

Belirtilen veri arabelleğinin SocketFlagsbelirtilen konumuna belirtilen sayıda veri 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

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 .

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

buffer, null'e eşittir.

-veya-

remoteEP, null'e eşittir.

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

-veya-

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

-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.

Ö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.

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. Bilinmeyen bir konaktan veya birden çok konaktan bağlantısız veri birimleri almak istiyorsanız bu yöntem kullanışlı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 bufferReceiveFrom 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, ReceiveFrom yöntemi hemen tamamlanır ve bir SocketExceptionoluşturur. Veri okuma Available için kullanılabilir olup olmadığını belirlemek için özelliğini kullanabilirsiniz. Available Sıfır olmayan bir durumdayken 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 etmeniz gerekir. yöntemini çağırmadan ReceiveFrom önce bağlantı kurmaz veya kabul ederseniz, bir SocketExceptionalırsınız. Ayrıca, 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 kadar veri okur. Uzak konak yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve kullanılabilir tüm veriler Alındı ise, ReceiveFrom yöntem hemen tamamlanır ve sıfır bayt döndürür.

Uyarı

çağrısından ReceiveFromönce yöntemini kullanarak Bind öğesini yerel bir uç noktaya açıkça bağlamanız Socket gerekir. Bunu yapmazsanız, ReceiveFrom bir SocketExceptionatar. bir SocketExceptionalırsanız, özelliğini kullanarak SocketException.ErrorCode belirli bir hata kodunu alın. 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.

Uyarı

AddressFamily içinde ReceiveFrom kullanılan öğesinin EndPoint içinde kullanılan SendToile EndPoint eşleşmesi AddressFamily gerekir.

Uyarı

Bu üye, uygulamanızda ağ izlemeyi etkinleştirdiğinizde izleme bilgilerini döndürür. Daha fazla bilgi için bkz. .NET Framework'te Ağ İzleme.

Ayrıca bkz.

Şunlara uygulanır

ReceiveFrom(Span<Byte>, SocketFlags, EndPoint)

Kaynak:
Socket.cs
Kaynak:
Socket.cs
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

buffer
Span<Byte>

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

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'e eşittir.

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

Şunlara uygulanır

ReceiveFrom(Byte[], SocketFlags, EndPoint)

Kaynak:
Socket.cs
Kaynak:
Socket.cs
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

buffer
Byte[]

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

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

buffer, null'e eşittir.

-veya-

remoteEP, null'e eşittir.

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, uzak bir konaktan bağlantısız bir veri birimi alır. SocketFlags yöntemine ReceiveFrom geçirilir.

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. Bilinmeyen bir konaktan veya birden çok konaktan bağlantısız veri birimleri almak istiyorsanız bu yöntem kullanışlıdır.

Bu aşırı yükleme yalnızca bir alma arabelleği, gerekli SocketFlagsolan ve uzak konağı temsil eden bir EndPoint sağlamanızı gerektirir. Uzaklık varsayılan olarak 0'a, boyut ise arabellek parametresinin uzunluğuna varsayılan olarak atanır.

Uyarı

çağrısından ReceiveFromönce yöntemini kullanarak Bind öğesini yerel bir uç noktaya açıkça bağlamanız Socket gerekir. Bunu yapmazsanız, ReceiveFrom bir SocketExceptionatar.

Bağlantısız protokollerle, ReceiveFrom yerel ağ arabelleğine alınan ilk sıralanmış veri birimi okunur. Aldığınız veri birimi boyutundan bufferReceiveFrom 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, ReceiveFrom yöntemi hemen tamamlanır ve bir SocketExceptionoluşturur. Veri okuma Available için kullanılabilir olup olmadığını belirlemek için özelliğini kullanabilirsiniz. Available Sıfır olmayan bir durumdayken 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 etmeniz gerekir. yöntemini çağırmadan ReceiveFrom önce bağlantı kurmaz veya kabul ederseniz, bir SocketExceptionalırsınız. Ayrıca, 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 bufferkadar kullanılabilir olan kadar veri okur. Uzak konak yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve kullanılabilir tüm veriler Alındı ise, ReceiveFrom yöntem hemen tamamlanır ve sıfır bayt döndürür.

Uyarı

bir SocketExceptionalırsanız, özelliğini kullanarak SocketException.ErrorCode belirli bir hata kodunu alın. 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.

Uyarı

AddressFamily içinde ReceiveFrom kullanılan öğesinin EndPoint içinde kullanılan SendToile EndPoint eşleşmesi AddressFamily gerekir.

Uyarı

Bu üye, uygulamanızda ağ izlemeyi etkinleştirdiğinizde izleme bilgilerini döndürür. Daha fazla bilgi için bkz. .NET Framework'te Ağ İzleme.

Ayrıca bkz.

Şunlara uygulanır

ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress)

Kaynak:
Socket.cs
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::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

buffer
Span<Byte>

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

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'e eşittir.

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

Şunlara uygulanır

ReceiveFrom(Span<Byte>, EndPoint)

Kaynak:
Socket.cs
Kaynak:
Socket.cs
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

buffer
Span<Byte>

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

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'e eşittir.

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

Şunlara uygulanır

ReceiveFrom(Byte[], EndPoint)

Kaynak:
Socket.cs
Kaynak:
Socket.cs
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

buffer
Byte[]

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

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

buffer, null'e eşittir.

-veya-

remoteEP, null'e eşittir.

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, uzak bir konaktan bağlantısız bir veri birimi alır.

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. Bilinmeyen bir konaktan veya birden çok konaktan bağlantısız veri birimleri almak istiyorsanız bu yöntem kullanışlıdır.

Bu aşırı yükleme yalnızca uzak konağı temsil eden bir alma bufferve 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 Nonesahiptir.

Uyarı

çağrısından ReceiveFromönce yöntemini kullanarak Bind öğesini yerel bir uç noktaya açıkça bağlamanız Socket gerekir. Bunu yapmazsanız, ReceiveFrom bir SocketExceptionatar.

Bağlantısız protokollerle, ReceiveFrom yerel ağ arabelleğine alınan ilk sıralanmış veri birimi okunur. Aldığınız veri birimi boyutundan bufferReceiveFrom 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, ReceiveFrom yöntemi hemen tamamlanır ve bir SocketExceptionoluşturur. Veri okuma Available için kullanılabilir olup olmadığını belirlemek için özelliğini kullanabilirsiniz. Available Sıfır olmayan bir durumdayken 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 etmeniz gerekir. yöntemini çağırmadan ReceiveFrom önce bağlantı kurmaz veya kabul ederseniz, bir SocketExceptionalırsınız. Ayrıca, 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 bufferkadar kullanılabilir olan kadar veri okur. Uzak konak yöntemiyle Shutdown bağlantıyı kapatırsa Socket ve kullanılabilir tüm veriler alınırsa, ReceiveFrom yöntem hemen tamamlanır ve sıfır bayt döndürür.

Uyarı

bir SocketExceptionalırsanız, özelliğini kullanarak SocketException.ErrorCode belirli bir hata kodunu alın. 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.

Uyarı

AddressFamily içinde ReceiveFrom kullanılan öğesinin EndPoint içinde kullanılan SendToile EndPoint eşleşmesi AddressFamily gerekir.

Uyarı

Bu üye, uygulamanızda ağ izlemeyi etkinleştirdiğinizde izleme bilgilerini döndürür. Daha fazla bilgi için bkz. .NET Framework'te Ağ İzleme.

Ayrıca bkz.

Şunlara uygulanır