Bagikan melalui


Socket.ReceiveFrom Metode

Definisi

Menerima datagram dan menyimpan titik akhir sumber.

Overload

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

Menerima jumlah byte yang ditentukan ke dalam buffer data, menggunakan , dan menyimpan titik akhir yang ditentukan SocketFlags.

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

Menerima jumlah byte data yang ditentukan ke lokasi buffer data yang ditentukan, menggunakan SocketFlags, dan menyimpan titik akhir.

ReceiveFrom(Span<Byte>, SocketFlags, EndPoint)

Menerima datagram ke dalam buffer data, menggunakan , dan menyimpan titik akhir yang ditentukan SocketFlags.

ReceiveFrom(Byte[], SocketFlags, EndPoint)

Menerima datagram ke dalam buffer data, menggunakan , dan menyimpan titik akhir yang ditentukan SocketFlags.

ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress)

Menerima datagram ke dalam buffer data, menggunakan , dan menyimpan titik akhir yang ditentukan SocketFlags.

ReceiveFrom(Span<Byte>, EndPoint)

Menerima datagram ke dalam buffer data dan menyimpan titik akhir.

ReceiveFrom(Byte[], EndPoint)

Menerima datagram ke dalam buffer data dan menyimpan titik akhir.

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

Sumber:
Socket.cs
Sumber:
Socket.cs
Sumber:
Socket.cs

Menerima jumlah byte yang ditentukan ke dalam buffer data, menggunakan , dan menyimpan titik akhir yang ditentukan SocketFlags.

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

Parameter

buffer
Byte[]

Array jenis Byte yang merupakan lokasi penyimpanan untuk data yang diterima.

size
Int32

Jumlah byte yang akan diterima.

socketFlags
SocketFlags

Kombinasi bitwise dari SocketFlags nilai.

remoteEP
EndPoint

Referensi ke EndPoint jenis yang sama dengan titik akhir host jarak jauh yang akan diperbarui saat berhasil diterima.

Mengembalikan

Jumlah byte yang diterima.

Pengecualian

bufferadalah null.

-atau-

remoteEPadalah null.

size kurang dari 0.

-atau-

size lebih besar dari panjang buffer.

socketFlags bukan kombinasi nilai yang valid.

-atau-

Properti LocalEndPoint tidak disetel.

-atau-

Kesalahan sistem operasi terjadi saat mengakses Socket.

Penelepon dalam tumpukan panggilan tidak memiliki izin yang diperlukan.

Contoh

Contoh kode berikut menerima datagram tanpa koneksi dari host jarak jauh. Ukuran buffer, dan SocketFlags diteruskan ke ReceiveFrom metode .

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

Keterangan

Metode membaca ReceiveFrom data ke dalam buffer parameter, mengembalikan jumlah byte yang berhasil dibaca, dan menangkap titik akhir host jarak jauh tempat data dikirim. Metode ini berguna jika Anda berniat menerima datagram tanpa koneksi dari host yang tidak diketahui atau beberapa host.

Kelebihan beban ini hanya mengharuskan Anda untuk menyediakan buffer penerima, jumlah byte yang ingin Anda terima, yang diperlukan SocketFlags, dan EndPoint yang mewakili host jarak jauh. Offset buffer default ke 0.

Dengan protokol tanpa koneksi, ReceiveFrom akan membaca datagram antrean pertama yang diterima ke dalam buffer jaringan lokal. Jika datagram yang Anda terima lebih besar dari bufferukuran , ReceiveFrom metode akan diisi buffer dengan pesan sebanyak mungkin, dan melempar .SocketException Jika Anda menggunakan protokol yang tidak dapat diandalkan, data berlebih akan hilang. Jika Anda menggunakan protokol yang dapat diandalkan, kelebihan data akan disimpan oleh penyedia layanan dan Anda dapat mengambilnya dengan memanggil ReceiveFrom metode dengan buffer yang cukup besar.

Jika tidak ada data yang tersedia untuk dibaca, ReceiveFrom metode akan memblokir hingga data tersedia. Jika Anda berada dalam mode non-pemblokiran, dan tidak ada data yang tersedia di buffer tumpukan protokol, ReceiveFrom metode akan segera selesai dan melempar SocketException. Anda dapat menggunakan Available properti untuk menentukan apakah data tersedia untuk dibaca. Ketika Available bukan nol, coba lagi operasi terima.

Meskipun ReceiveFrom ditujukan untuk protokol tanpa koneksi, Anda juga dapat menggunakan protokol berorientasi koneksi. Jika Anda memilih untuk melakukannya, Anda harus terlebih dahulu membuat koneksi host jarak jauh dengan memanggil Connect metode atau menerima koneksi host jarak jauh yang masuk dengan memanggil Accept metode . Jika Anda tidak membuat atau menerima koneksi sebelum memanggil ReceiveFrom metode , Anda akan mendapatkan SocketException. Anda juga dapat membuat host jarak jauh default untuk protokol tanpa koneksi sebelum memanggil ReceiveFrom metode .

Dengan soket berorientasi koneksi, ReceiveFrom akan membaca data sebanyak yang tersedia hingga jumlah byte yang ditentukan oleh size parameter . Jika host jarak jauh mematikan Socket koneksi dengan Shutdown metode , dan semua data yang tersedia telah diterima, ReceiveFrom metode akan segera selesai dan mengembalikan nol byte.

Catatan

Sebelum memanggil ReceiveFrom, Anda harus secara eksplisit mengikat Socket ke titik akhir lokal menggunakan Bind metode . Jika Anda tidak, ReceiveFrom akan melempar SocketException. Jika Anda menerima SocketException, gunakan SocketException.ErrorCode properti untuk mendapatkan kode kesalahan tertentu. Setelah Anda mendapatkan kode ini, lihat dokumentasi kode kesalahan API Windows Sockets versi 2 untuk deskripsi terperinci tentang kesalahan tersebut.

Catatan

Dari yang EndPoint digunakan dalam ReceiveFrom perlu mencocokkan AddressFamily dari yang EndPoint digunakan dalam SendTo.AddressFamily

Catatan

Anggota ini mengeluarkan informasi pelacakan saat Anda mengaktifkan pelacakan jaringan di aplikasi Anda. Untuk informasi selengkapnya, lihat Pelacakan Jaringan di .NET Framework.

Lihat juga

Berlaku untuk

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

Sumber:
Socket.cs
Sumber:
Socket.cs
Sumber:
Socket.cs

Menerima jumlah byte data yang ditentukan ke lokasi buffer data yang ditentukan, menggunakan SocketFlags, dan menyimpan titik akhir.

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

Parameter

buffer
Byte[]

Array jenis Byte yang merupakan lokasi penyimpanan untuk data yang diterima.

offset
Int32

Posisi dalam buffer parameter untuk menyimpan data yang diterima.

size
Int32

Jumlah byte yang akan diterima.

socketFlags
SocketFlags

Kombinasi bitwise dari SocketFlags nilai.

remoteEP
EndPoint

Referensi ke EndPoint jenis yang sama dengan titik akhir host jarak jauh yang akan diperbarui saat berhasil diterima.

Mengembalikan

Jumlah byte yang diterima.

Pengecualian

bufferadalah null.

-atau-

remoteEPadalah null.

offset kurang dari 0.

-atau-

offset lebih besar dari panjang buffer.

-atau-

size kurang dari 0.

-atau-

size lebih besar dari panjang buffer dikurangi nilai parameter offset.

socketFlags bukan kombinasi nilai yang valid.

-atau-

Properti LocalEndPoint tidak disetel.

-atau-

Terjadi kesalahan saat mencoba mengakses soket.

Contoh

Contoh kode berikut menerima datagram tanpa koneksi dari host jarak jauh. Offset, ukuran buffer, dan SocketFlags diteruskan ke ReceiveFrom metode .

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

Keterangan

Metode membaca ReceiveFrom data ke dalam buffer parameter, mengembalikan jumlah byte yang berhasil dibaca, dan menangkap titik akhir host jarak jauh tempat data dikirim. Metode ini berguna jika Anda berniat menerima datagram tanpa koneksi dari host yang tidak diketahui atau beberapa host.

Dengan protokol tanpa koneksi, ReceiveFrom akan membaca datagram antrean pertama yang diterima ke dalam buffer jaringan lokal. Jika datagram yang Anda terima lebih besar dari bufferukuran , ReceiveFrom metode akan diisi buffer dengan pesan sebanyak mungkin, dan melempar .SocketException Jika Anda menggunakan protokol yang tidak dapat diandalkan, data berlebih akan hilang. Jika Anda menggunakan protokol yang dapat diandalkan, kelebihan data akan disimpan oleh penyedia layanan dan Anda dapat mengambilnya dengan memanggil ReceiveFrom metode dengan buffer yang cukup besar.

Jika tidak ada data yang tersedia untuk dibaca, ReceiveFrom metode akan memblokir hingga data tersedia. Jika Anda berada dalam mode non-pemblokiran, dan tidak ada data yang tersedia di buffer tumpukan protokol, ReceiveFrom metode akan segera selesai dan melempar SocketException. Anda dapat menggunakan Available properti untuk menentukan apakah data tersedia untuk dibaca. Ketika Available bukan nol, coba lagi operasi terima.

Meskipun ReceiveFrom ditujukan untuk protokol tanpa koneksi, Anda juga dapat menggunakan protokol berorientasi koneksi. Jika Anda memilih untuk melakukannya, Anda harus terlebih dahulu membuat koneksi host jarak jauh dengan memanggil Connect metode atau menerima koneksi host jarak jauh yang masuk dengan memanggil Accept metode . Jika Anda tidak membuat atau menerima koneksi sebelum memanggil ReceiveFrom metode , Anda akan mendapatkan SocketException. Anda juga dapat membuat host jarak jauh default untuk protokol tanpa koneksi sebelum memanggil ReceiveFrom metode .

Dengan soket berorientasi koneksi, ReceiveFrom akan membaca data sebanyak yang tersedia hingga jumlah byte yang ditentukan oleh size parameter . Jika host jarak jauh mematikan Socket koneksi dengan Shutdown metode , dan semua data yang tersedia telah Diterima, ReceiveFrom metode akan segera selesai dan mengembalikan nol byte.

Catatan

Sebelum memanggil ReceiveFrom, Anda harus secara eksplisit mengikat Socket ke titik akhir lokal menggunakan Bind metode . Jika Anda tidak, ReceiveFrom akan melempar SocketException. Jika Anda menerima SocketException, gunakan SocketException.ErrorCode properti untuk mendapatkan kode kesalahan tertentu. Setelah Anda mendapatkan kode ini, lihat dokumentasi kode kesalahan API Windows Sockets versi 2 untuk deskripsi terperinci tentang kesalahan tersebut.

Catatan

Dari yang EndPoint digunakan dalam ReceiveFrom perlu mencocokkan AddressFamily dari yang EndPoint digunakan dalam SendTo.AddressFamily

Catatan

Anggota ini mengeluarkan informasi pelacakan saat Anda mengaktifkan pelacakan jaringan di aplikasi Anda. Untuk informasi selengkapnya, lihat Pelacakan Jaringan di .NET Framework.

Lihat juga

Berlaku untuk

ReceiveFrom(Span<Byte>, SocketFlags, EndPoint)

Sumber:
Socket.cs
Sumber:
Socket.cs
Sumber:
Socket.cs

Menerima datagram ke dalam buffer data, menggunakan , dan menyimpan titik akhir yang ditentukan SocketFlags.

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

Parameter

buffer
Span<Byte>

Rentang byte yang merupakan lokasi penyimpanan untuk data yang diterima.

socketFlags
SocketFlags

Kombinasi bitwise dari SocketFlags nilai.

remoteEP
EndPoint

Referensi ke EndPoint jenis yang sama dengan titik akhir host jarak jauh yang akan diperbarui saat berhasil diterima.

Mengembalikan

Jumlah byte yang diterima.

Pengecualian

remoteEPadalah null.

Terjadi kesalahan saat mencoba mengakses soket.

Berlaku untuk

ReceiveFrom(Byte[], SocketFlags, EndPoint)

Sumber:
Socket.cs
Sumber:
Socket.cs
Sumber:
Socket.cs

Menerima datagram ke dalam buffer data, menggunakan , dan menyimpan titik akhir yang ditentukan SocketFlags.

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

Parameter

buffer
Byte[]

Array jenis Byte yang merupakan lokasi penyimpanan untuk data yang diterima.

socketFlags
SocketFlags

Kombinasi bitwise dari SocketFlags nilai.

remoteEP
EndPoint

Referensi ke EndPoint jenis yang sama dengan titik akhir host jarak jauh yang akan diperbarui saat berhasil diterima.

Mengembalikan

Jumlah byte yang diterima.

Pengecualian

bufferadalah null.

-atau-

remoteEPadalah null.

Terjadi kesalahan saat mencoba mengakses soket.

Penelepon dalam tumpukan panggilan tidak memiliki izin yang diperlukan.

Contoh

Contoh kode berikut menerima datagram tanpa koneksi dari host jarak jauh. SocketFlags diteruskan ke ReceiveFrom metode .

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

Keterangan

Metode membaca ReceiveFrom data ke dalam buffer parameter, mengembalikan jumlah byte yang berhasil dibaca, dan menangkap titik akhir host jarak jauh tempat data dikirim. Metode ini berguna jika Anda berniat menerima datagram tanpa koneksi dari host yang tidak diketahui atau beberapa host.

Kelebihan beban ini hanya mengharuskan Anda untuk menyediakan buffer penerima, yang diperlukan SocketFlags, dan EndPoint yang mewakili host jarak jauh. Offset default ke 0 dan ukuran default ke panjang parameter buffer.

Catatan

Sebelum memanggil ReceiveFrom, Anda harus secara eksplisit mengikat Socket ke titik akhir lokal menggunakan Bind metode . Jika Anda tidak, ReceiveFrom akan melempar SocketException.

Dengan protokol tanpa koneksi, ReceiveFrom akan membaca datagram antrean pertama yang diterima ke dalam buffer jaringan lokal. Jika datagram yang Anda terima lebih besar dari bufferukuran , ReceiveFrom metode akan diisi buffer dengan pesan sebanyak mungkin, dan melempar .SocketException Jika Anda menggunakan protokol yang tidak dapat diandalkan, data berlebih akan hilang. Jika Anda menggunakan protokol yang dapat diandalkan, kelebihan data akan disimpan oleh penyedia layanan dan Anda dapat mengambilnya dengan memanggil ReceiveFrom metode dengan buffer yang cukup besar.

Jika tidak ada data yang tersedia untuk dibaca, ReceiveFrom metode akan memblokir hingga data tersedia. Jika Anda berada dalam mode non-pemblokiran, dan tidak ada data yang tersedia di buffer tumpukan protokol, ReceiveFrom metode akan segera selesai dan melempar SocketException. Anda dapat menggunakan Available properti untuk menentukan apakah data tersedia untuk dibaca. Ketika Available bukan nol, coba lagi operasi terima.

Meskipun ReceiveFrom ditujukan untuk protokol tanpa koneksi, Anda juga dapat menggunakan protokol berorientasi koneksi. Jika Anda memilih untuk melakukannya, Anda harus terlebih dahulu membuat koneksi host jarak jauh dengan memanggil Connect metode atau menerima koneksi host jarak jauh yang masuk dengan memanggil Accept metode . Jika Anda tidak membuat atau menerima koneksi sebelum memanggil ReceiveFrom metode , Anda akan mendapatkan SocketException. Anda juga dapat membuat host jarak jauh default untuk protokol tanpa koneksi sebelum memanggil ReceiveFrom metode .

Dengan soket berorientasi koneksi, ReceiveFrom akan membaca data sebanyak yang tersedia hingga ukuran buffer. Jika host jarak jauh mematikan Socket koneksi dengan Shutdown metode , dan semua data yang tersedia telah Diterima, ReceiveFrom metode akan segera selesai dan mengembalikan nol byte.

Catatan

Jika Anda menerima SocketException, gunakan SocketException.ErrorCode properti untuk mendapatkan kode kesalahan tertentu. Setelah Anda mendapatkan kode ini, lihat dokumentasi kode kesalahan API Windows Sockets versi 2 untuk deskripsi terperinci tentang kesalahan tersebut.

Catatan

Dari yang EndPoint digunakan dalam ReceiveFrom perlu mencocokkan AddressFamily dari yang EndPoint digunakan dalam SendTo.AddressFamily

Catatan

Anggota ini mengeluarkan informasi pelacakan saat Anda mengaktifkan pelacakan jaringan di aplikasi Anda. Untuk informasi selengkapnya, lihat Pelacakan Jaringan di .NET Framework.

Lihat juga

Berlaku untuk

ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress)

Sumber:
Socket.cs
Sumber:
Socket.cs

Menerima datagram ke dalam buffer data, menggunakan , dan menyimpan titik akhir yang ditentukan SocketFlags.

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

Parameter

buffer
Span<Byte>

Rentang byte yang merupakan lokasi penyimpanan untuk data yang diterima.

socketFlags
SocketFlags

Kombinasi bitwise dari SocketFlags nilai.

receivedAddress
SocketAddress

SocketAddress Instans yang diperbarui dengan nilai peer jarak jauh saat metode ini kembali.

Mengembalikan

Jumlah byte yang diterima.

Pengecualian

receivedAddressadalah null.

Terjadi kesalahan saat mencoba mengakses soket.

Berlaku untuk

ReceiveFrom(Span<Byte>, EndPoint)

Sumber:
Socket.cs
Sumber:
Socket.cs
Sumber:
Socket.cs

Menerima datagram ke dalam buffer data dan menyimpan titik akhir.

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

Parameter

buffer
Span<Byte>

Rentang byte yang merupakan lokasi penyimpanan untuk data yang diterima.

remoteEP
EndPoint

Referensi ke EndPoint jenis yang sama dengan titik akhir host jarak jauh yang akan diperbarui saat berhasil diterima.

Mengembalikan

Jumlah byte yang diterima.

Pengecualian

remoteEPadalah null.

Terjadi kesalahan saat mencoba mengakses soket.

Berlaku untuk

ReceiveFrom(Byte[], EndPoint)

Sumber:
Socket.cs
Sumber:
Socket.cs
Sumber:
Socket.cs

Menerima datagram ke dalam buffer data dan menyimpan titik akhir.

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

Parameter

buffer
Byte[]

Array jenis Byte yang merupakan lokasi penyimpanan untuk data yang diterima.

remoteEP
EndPoint

Referensi ke EndPoint jenis yang sama dengan titik akhir host jarak jauh yang akan diperbarui saat berhasil diterima.

Mengembalikan

Jumlah byte yang diterima.

Pengecualian

bufferadalah null.

-atau-

remoteEPadalah null.

Terjadi kesalahan saat mencoba mengakses soket.

Penelepon dalam tumpukan panggilan tidak memiliki izin yang diperlukan.

Contoh

Contoh kode berikut menerima datagram tanpa koneksi dari host jarak jauh.

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

Keterangan

Metode membaca ReceiveFrom data ke dalam buffer parameter, mengembalikan jumlah byte yang berhasil dibaca, dan menangkap titik akhir host jarak jauh tempat data dikirim. Metode ini berguna jika Anda berniat menerima datagram tanpa koneksi dari host yang tidak diketahui atau beberapa host.

Kelebihan beban ini hanya mengharuskan Anda untuk menyediakan penerima buffer, dan EndPoint yang mewakili host jarak jauh. Offset buffer default ke 0. Ukuran default ke panjang buffer parameter dan socketFlags nilai default ke None.

Catatan

Sebelum memanggil ReceiveFrom, Anda harus secara eksplisit mengikat Socket ke titik akhir lokal menggunakan Bind metode . Jika Anda tidak, ReceiveFrom akan melempar SocketException.

Dengan protokol tanpa koneksi, ReceiveFrom akan membaca datagram antrean pertama yang diterima ke dalam buffer jaringan lokal. Jika datagram yang Anda terima lebih besar dari bufferukuran , ReceiveFrom metode akan diisi buffer dengan pesan sebanyak mungkin, dan melempar .SocketException Jika Anda menggunakan protokol yang tidak dapat diandalkan, data berlebih akan hilang. Jika Anda menggunakan protokol yang dapat diandalkan, kelebihan data akan disimpan oleh penyedia layanan dan Anda dapat mengambilnya dengan memanggil ReceiveFrom metode dengan buffer yang cukup besar.

Jika tidak ada data yang tersedia untuk dibaca, ReceiveFrom metode akan memblokir hingga data tersedia. Jika Anda berada dalam mode non-pemblokiran, dan tidak ada data yang tersedia di buffer tumpukan protokol, ReceiveFrom metode akan segera selesai dan melempar SocketException. Anda dapat menggunakan Available properti untuk menentukan apakah data tersedia untuk dibaca. Ketika Available bukan nol, coba lagi operasi terima.

Meskipun ReceiveFrom ditujukan untuk protokol tanpa koneksi, Anda juga dapat menggunakan protokol berorientasi koneksi. Jika Anda memilih untuk melakukannya, Anda harus terlebih dahulu membuat koneksi host jarak jauh dengan memanggil Connect metode atau menerima koneksi host jarak jauh yang masuk dengan memanggil Accept metode . Jika Anda tidak membuat atau menerima koneksi sebelum memanggil ReceiveFrom metode , Anda akan mendapatkan SocketException. Anda juga dapat membuat host jarak jauh default untuk protokol tanpa koneksi sebelum memanggil ReceiveFrom metode .

Dengan soket berorientasi koneksi, ReceiveFrom akan membaca data sebanyak yang tersedia hingga ukuran buffer. Jika host jarak jauh mematikan Socket koneksi dengan Shutdown metode , dan semua data yang tersedia telah diterima, ReceiveFrom metode akan segera selesai dan mengembalikan nol byte.

Catatan

Jika Anda menerima SocketException, gunakan SocketException.ErrorCode properti untuk mendapatkan kode kesalahan tertentu. Setelah Anda mendapatkan kode ini, lihat dokumentasi kode kesalahan API Windows Sockets versi 2 untuk deskripsi terperinci tentang kesalahan tersebut.

Catatan

Dari yang EndPoint digunakan dalam ReceiveFrom perlu mencocokkan AddressFamily dari yang EndPoint digunakan dalam SendTo.AddressFamily

Catatan

Anggota ini mengeluarkan informasi pelacakan saat Anda mengaktifkan pelacakan jaringan di aplikasi Anda. Untuk informasi selengkapnya, lihat Pelacakan Jaringan di .NET Framework.

Lihat juga

Berlaku untuk