Bagikan melalui


Socket.SendTo Metode

Definisi

Mengirim data ke titik akhir tertentu.

Overload

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

Mengirim jumlah byte data yang ditentukan ke titik akhir yang ditentukan, mulai dari lokasi yang ditentukan di buffer, dan menggunakan yang ditentukan SocketFlags.

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

Mengirim jumlah byte data yang ditentukan ke titik akhir yang ditentukan menggunakan yang ditentukan SocketFlags.

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

Mengirim data ke titik akhir tertentu menggunakan SocketFlags.

SendTo(ReadOnlySpan<Byte>, EndPoint)

Mengirim data ke titik akhir yang ditentukan.

SendTo(Byte[], SocketFlags, EndPoint)

Mengirim data ke titik akhir tertentu menggunakan SocketFlags.

SendTo(Byte[], EndPoint)

Mengirim data ke titik akhir yang ditentukan.

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

Mengirim data ke titik akhir tertentu menggunakan SocketFlags.

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

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

Mengirim jumlah byte data yang ditentukan ke titik akhir yang ditentukan, mulai dari lokasi yang ditentukan di buffer, dan menggunakan yang ditentukan SocketFlags.

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

Parameter

buffer
Byte[]

Array jenis Byte yang berisi data yang akan dikirim.

offset
Int32

Posisi dalam buffer data untuk mulai mengirim data.

size
Int32

Jumlah byte yang akan dikirim.

socketFlags
SocketFlags

Kombinasi bitwise dari SocketFlags nilai.

remoteEP
EndPoint

EndPoint yang mewakili lokasi tujuan untuk data.

Mengembalikan

Jumlah byte yang dikirim.

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

socketFlags bukan kombinasi nilai yang valid.

-atau-

Kesalahan sistem operasi terjadi saat mengakses Socket.

Penelepon dalam tumpukan panggilan tidak memiliki izin yang diperlukan.

Contoh

Contoh kode berikut mengirimkan datagram tanpa koneksi ke host jarak jauh yang ditentukan. Offset, ukuran, dan SocketFlags diteruskan ke SendTo metode .

static void SendTo4()
{
   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 );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, 0, msg->Length, SocketFlags::None, endPoint );
   s->Close();
}
public static void SendTo4()
{
    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);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint);
    s.Close();
}
Public Shared Sub SendTo4() 
    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)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint)
    s.Close()

End Sub

Keterangan

Dalam kelebihan beban ini, jika Anda menentukan DontRoute bendera sebagai socketflags parameter, data yang Anda kirim tidak akan dirutekan.

Jika Anda menggunakan protokol tanpa koneksi, Anda tidak perlu membuat host jarak jauh default dengan Connect metode sebelum memanggil SendTo. Anda hanya perlu melakukan ini jika Anda berniat untuk memanggil Send metode . Jika Anda memanggil Connect metode sebelum memanggil SendTo, remoteEP parameter akan mengambil alih host jarak jauh default yang ditentukan hanya untuk operasi pengiriman tersebut. Anda juga tidak diharuskan untuk memanggil Bind metode , karena penyedia layanan yang mendasar akan menetapkan alamat jaringan lokal dan nomor port yang paling sesuai. Jika Anda perlu mengidentifikasi alamat jaringan lokal dan nomor port yang ditetapkan, Anda dapat menggunakan LocalEndPoint properti setelah SendTo metode berhasil diselesaikan.

Meskipun ditujukan untuk protokol tanpa koneksi, SendTo juga berfungsi dengan protokol berorientasi koneksi. Jika Anda menggunakan protokol berorientasi koneksi, Anda harus terlebih dahulu membuat koneksi host jarak jauh dengan memanggil Connect metode atau menerima permintaan koneksi masuk menggunakan metode .Accept Jika Anda tidak membuat atau menerima koneksi host jarak jauh, SendTo akan melemparkan SocketException. Anda juga dapat membuat host jarak jauh default untuk protokol tanpa koneksi sebelum memanggil SendTo metode . Dalam salah satu kasus ini, SendTo akan mengabaikan remoteEP parameter dan hanya mengirim data ke host jarak jauh yang terhubung atau default.

Soket pemblokiran akan memblokir hingga jumlah byte yang diminta dikirim. Karena non-pemblokiran Socket segera selesai, mungkin tidak mengirim semua byte yang diminta dalam satu operasi. Aplikasi Anda bertanggung jawab untuk melacak jumlah byte yang dikirim dan mencoba kembali operasi sampai aplikasi mengirim jumlah byte yang diminta. Juga tidak ada jaminan bahwa data yang Anda kirim akan segera muncul di jaringan. Untuk meningkatkan efisiensi jaringan, sistem yang mendasar dapat menunda transmisi sampai sejumlah besar data keluar dikumpulkan. Penyelesaian metode yang SendTo berhasil berarti bahwa sistem yang mendasar telah memiliki ruang untuk buffer data Anda untuk pengiriman jaringan.

Jika Anda menggunakan protokol tanpa koneksi dalam mode pemblokiran, SendTo akan memblokir hingga datagram dikirim. Jika Anda ingin mengirim data ke alamat siaran, Anda harus terlebih dahulu memanggil SetSocketOption metode dan mengatur opsi soket ke SocketOptionName.Broadcast. Anda juga harus yakin bahwa ukurannya tidak melebihi ukuran paket maksimum penyedia layanan yang mendasar. Jika ya, datagram tidak akan dikirim dan SendTo akan melempar SocketException.

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

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

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

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

Mengirim jumlah byte data yang ditentukan ke titik akhir yang ditentukan menggunakan yang ditentukan SocketFlags.

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

Parameter

buffer
Byte[]

Array jenis Byte yang berisi data yang akan dikirim.

size
Int32

Jumlah byte yang akan dikirim.

socketFlags
SocketFlags

Kombinasi bitwise dari SocketFlags nilai.

remoteEP
EndPoint

EndPoint yang mewakili lokasi tujuan untuk data.

Mengembalikan

Jumlah byte yang dikirim.

Pengecualian

bufferadalah null.

-atau-

remoteEPadalah null.

yang ditentukan size melebihi ukuran buffer.

Terjadi kesalahan saat mencoba mengakses soket.

Contoh

Contoh kode berikut mengirimkan datagram tanpa koneksi ke host jarak jauh yang ditentukan. Ukuran dan SocketFlags diteruskan ke SendTo metode .

static void SendTo3()
{
   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 );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, msg->Length, SocketFlags::None, endPoint );
   s->Close();
}
public static void SendTo3()
{
    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);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, msg.Length, SocketFlags.None, endPoint);
    s.Close();
}
Public Shared Sub SendTo3() 
    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)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, msg.Length, SocketFlags.None, endPoint)
    s.Close()

End Sub

Keterangan

Dalam kelebihan beban ini, offset buffer default ke 0. Jika Anda menentukan DontRoute bendera sebagai socketflags parameter, data yang Anda kirim tidak akan dirutekan.

Jika Anda menggunakan protokol tanpa koneksi, Anda tidak perlu membuat host jarak jauh default dengan Connect metode sebelum memanggil SendTo. Anda hanya perlu melakukan ini jika Anda berniat untuk memanggil Send metode . Jika Anda memanggil Connect metode sebelum memanggil SendTo, remoteEP parameter akan mengambil alih host jarak jauh default yang ditentukan hanya untuk operasi pengiriman tersebut. Anda juga tidak diharuskan untuk memanggil Bind metode , karena penyedia layanan yang mendasar akan menetapkan alamat jaringan lokal dan nomor port yang paling sesuai. Jika Anda perlu mengidentifikasi alamat jaringan lokal dan nomor port yang ditetapkan, Anda dapat menggunakan LocalEndPoint properti setelah SendTo metode berhasil diselesaikan.

Meskipun ditujukan untuk protokol tanpa koneksi, SendTo juga berfungsi dengan protokol berorientasi koneksi. Jika Anda menggunakan protokol berorientasi koneksi, Anda harus terlebih dahulu membuat koneksi host jarak jauh dengan memanggil Connect metode atau menerima permintaan koneksi masuk menggunakan metode .Accept Jika Anda tidak membuat atau menerima koneksi host jarak jauh, SendTo akan melemparkan SocketException. Anda juga dapat membuat host jarak jauh default untuk protokol tanpa koneksi sebelum memanggil SendTo metode . Dalam salah satu kasus ini, SendTo akan mengabaikan remoteEP parameter dan hanya mengirim data ke host jarak jauh yang terhubung atau default.

Soket pemblokiran akan memblokir hingga jumlah byte yang diminta dikirim. Karena pemblokiran Socket selesai segera, mungkin tidak mengirim semua byte yang diminta dalam satu operasi. Aplikasi Anda bertanggung jawab untuk melacak jumlah byte yang dikirim dan mencoba kembali operasi sampai aplikasi mengirim jumlah byte yang diminta. Juga tidak ada jaminan bahwa data yang Anda kirim akan segera muncul di jaringan. Untuk meningkatkan efisiensi jaringan, sistem yang mendasar dapat menunda transmisi sampai sejumlah besar data keluar dikumpulkan. Penyelesaian metode yang SendTo berhasil berarti bahwa sistem yang mendasar telah memiliki ruang untuk buffer data Anda untuk pengiriman jaringan.

Jika Anda menggunakan protokol tanpa koneksi dalam mode pemblokiran, SendTo akan memblokir hingga datagram dikirim. Jika Anda ingin mengirim data ke alamat siaran, Anda harus terlebih dahulu memanggil SetSocketOption metode dan mengatur opsi soket ke SocketOptionName.Broadcast. Anda juga harus yakin bahwa jumlah byte yang dikirim tidak melebihi ukuran paket maksimum penyedia layanan yang mendasar. Jika ya, datagram tidak akan dikirim dan SendTo akan melempar SocketException.

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

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

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

Sumber:
Socket.cs
Sumber:
Socket.cs

Mengirim data ke titik akhir tertentu menggunakan SocketFlags.

public:
 int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::SocketAddress ^ socketAddress);
public int SendTo (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress socketAddress);
member this.SendTo : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, socketAddress As SocketAddress) As Integer

Parameter

buffer
ReadOnlySpan<Byte>

Rentang byte yang berisi data yang akan dikirim.

socketFlags
SocketFlags

Kombinasi bitwise dari SocketFlags nilai yang akan digunakan saat mengirim data.

socketAddress
SocketAddress

SocketAddress yang mewakili tujuan untuk data.

Mengembalikan

Jumlah byte yang dikirim.

Pengecualian

socketAddressadalah null.

Terjadi kesalahan saat mencoba mengakses soket.

Berlaku untuk

SendTo(ReadOnlySpan<Byte>, EndPoint)

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

Mengirim data ke titik akhir yang ditentukan.

public:
 int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::EndPoint ^ remoteEP);
public int SendTo (ReadOnlySpan<byte> buffer, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), remoteEP As EndPoint) As Integer

Parameter

buffer
ReadOnlySpan<Byte>

Rentang byte yang berisi data yang akan dikirim.

remoteEP
EndPoint

EndPoint yang mewakili tujuan untuk data.

Mengembalikan

Jumlah byte yang dikirim.

Pengecualian

remoteEPadalah null.

Terjadi kesalahan saat mencoba mengakses soket.

Berlaku untuk

SendTo(Byte[], SocketFlags, EndPoint)

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

Mengirim data ke titik akhir tertentu menggunakan SocketFlags.

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

Parameter

buffer
Byte[]

Array jenis Byte yang berisi data yang akan dikirim.

socketFlags
SocketFlags

Kombinasi bitwise dari SocketFlags nilai.

remoteEP
EndPoint

EndPoint yang mewakili lokasi tujuan untuk data.

Mengembalikan

Jumlah byte yang dikirim.

Pengecualian

bufferadalah null.

-atau-

remoteEPadalah null.

Terjadi kesalahan saat mencoba mengakses soket.

Contoh

Contoh kode berikut mengirimkan datagram tanpa koneksi ke host jarak jauh yang ditentukan. SocketFlags diteruskan ke SendTo metode .

static void SendTo2()
{
   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 );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, SocketFlags::None, endPoint );
   s->Close();
}
public static void SendTo2()
{
    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);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, SocketFlags.None, endPoint);
    s.Close();
}
Public Shared Sub SendTo2() 
    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)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, SocketFlags.None, endPoint)
    s.Close()

End Sub

Keterangan

Dalam kelebihan beban ini, offset buffer default ke 0, dan jumlah byte untuk mengirim default ke ukuran buffer. Jika Anda menentukan DontRoute bendera sebagai socketflags parameter, data yang Anda kirim tidak akan dirutekan.

Jika Anda menggunakan protokol tanpa koneksi, Anda tidak perlu membuat host jarak jauh default dengan Connect metode sebelum memanggil SendTo. Anda hanya perlu melakukan ini jika Anda berniat untuk memanggil Send metode . Jika Anda memanggil Connect metode sebelum memanggil SendTo, remoteEP parameter akan mengambil alih host jarak jauh default yang ditentukan hanya untuk operasi pengiriman tersebut. Anda juga tidak diharuskan untuk memanggil Bind metode , karena penyedia layanan yang mendasar akan menetapkan alamat jaringan lokal dan nomor port yang paling tepat. Jika Anda perlu mengidentifikasi alamat jaringan lokal dan nomor port yang ditetapkan, Anda dapat menggunakan LocalEndPoint properti setelah SendTo metode berhasil diselesaikan.

Meskipun ditujukan untuk protokol tanpa koneksi, SendTo juga berfungsi dengan protokol berorientasi koneksi. Jika Anda menggunakan protokol berorientasi koneksi, Anda harus terlebih dahulu membuat koneksi host jarak jauh dengan memanggil Connect metode atau menerima permintaan koneksi masuk menggunakan metode .Accept Jika Anda tidak membuat atau menerima koneksi host jarak jauh, SendTo akan melempar SocketException. Anda juga dapat membuat host jarak jauh default untuk protokol tanpa koneksi sebelum memanggil SendTo metode . Dalam salah satu kasus ini, SendTo akan mengabaikan remoteEP parameter dan hanya mengirim data ke host jarak jauh yang terhubung atau default.

Soket pemblokiran akan memblokir sampai semua byte yang diminta di buffer dikirim. Karena pemblokiran Socket selesai segera, mungkin tidak mengirim semua byte di buffer. Adalah tanggung jawab aplikasi Anda untuk melacak jumlah byte yang dikirim dan mencoba kembali operasi sampai aplikasi mengirim semua byte di buffer. Juga tidak ada jaminan bahwa data yang Anda kirim akan segera muncul di jaringan. Untuk meningkatkan efisiensi jaringan, sistem yang mendasar dapat menunda transmisi sampai sejumlah besar data keluar dikumpulkan. Penyelesaian metode yang SendTo berhasil berarti bahwa sistem yang mendasar telah memiliki ruang untuk menyangga data Anda untuk pengiriman jaringan.

Jika Anda menggunakan protokol tanpa koneksi dalam mode pemblokiran, SendTo akan memblokir hingga datagram dikirim. Jika Anda ingin mengirim data ke alamat siaran, Anda harus terlebih dahulu memanggil SetSocketOption metode dan mengatur opsi soket ke SocketOptionName.Broadcast. Anda juga harus yakin bahwa jumlah byte yang dikirim tidak melebihi ukuran paket maksimum penyedia layanan yang mendasar. Jika ya, datagram tidak akan dikirim dan SendTo akan melempar SocketException.

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

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

SendTo(Byte[], EndPoint)

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

Mengirim data ke titik akhir yang ditentukan.

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

Parameter

buffer
Byte[]

Array jenis Byte yang berisi data yang akan dikirim.

remoteEP
EndPoint

EndPoint yang mewakili tujuan untuk data.

Mengembalikan

Jumlah byte yang dikirim.

Pengecualian

bufferadalah null.

-atau-

remoteEPadalah null.

Terjadi kesalahan saat mencoba mengakses soket.

Contoh

Contoh kode berikut mengirimkan datagram tanpa koneksi ke host jarak jauh yang ditentukan.

static void SendTo1()
{
   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 );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, endPoint );
   s->Close();
}
public static void SendTo1()
{
    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);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, endPoint);
    s.Close();
}
Public Shared Sub SendTo1() 
    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)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, endPoint)
    s.Close()

End Sub

Keterangan

Dalam kelebihan beban ini, offset buffer default ke 0, jumlah byte untuk mengirim default ke ukuran buffer parameter, dan SocketFlags nilai default ke 0.

Jika Anda menggunakan protokol tanpa koneksi, Anda tidak perlu membuat host jarak jauh default dengan Connect metode sebelum memanggil SendTo. Anda hanya perlu melakukan ini jika Anda berniat untuk memanggil Send metode . Jika Anda memanggil Connect metode sebelum memanggil SendTo, remoteEP parameter akan mengambil alih host jarak jauh default yang ditentukan hanya untuk operasi pengiriman tersebut. Anda juga tidak diharuskan untuk memanggil Bind metode , karena penyedia layanan yang mendasar akan menetapkan alamat jaringan lokal dan nomor port yang paling tepat. Jika Anda perlu mengidentifikasi alamat jaringan lokal dan nomor port yang ditetapkan, Anda dapat menggunakan LocalEndPoint properti setelah SendTo metode berhasil diselesaikan.

Meskipun ditujukan untuk protokol tanpa koneksi, SendTo juga berfungsi dengan protokol berorientasi koneksi. Jika Anda menggunakan protokol berorientasi koneksi, Anda harus terlebih dahulu membuat koneksi host jarak jauh dengan memanggil Connect metode atau menerima permintaan koneksi masuk menggunakan metode .Accept Jika Anda tidak membuat atau menerima koneksi host jarak jauh, SendTo akan melempar SocketException. Anda juga dapat membuat host jarak jauh default untuk protokol tanpa koneksi sebelum memanggil SendTo metode . Dalam salah satu kasus ini, SendTo akan mengabaikan remoteEP parameter dan hanya mengirim data ke host jarak jauh yang terhubung atau default.

Soket pemblokiran akan memblokir hingga semua byte di buffer dikirim. Karena pemblokiran Socket selesai segera, mungkin tidak mengirim semua byte di buffer. Adalah tanggung jawab aplikasi Anda untuk melacak jumlah byte yang dikirim dan mencoba kembali operasi sampai aplikasi mengirim semua byte di buffer. Juga tidak ada jaminan bahwa data yang Anda kirim akan segera muncul di jaringan. Untuk meningkatkan efisiensi jaringan, sistem yang mendasar dapat menunda transmisi sampai sejumlah besar data keluar dikumpulkan. Penyelesaian metode yang SendTo berhasil berarti bahwa sistem yang mendasar telah memiliki ruang untuk menyangga data Anda untuk pengiriman jaringan.

Jika Anda menggunakan protokol tanpa koneksi dalam mode pemblokiran, SendTo akan memblokir hingga datagram dikirim. Jika Anda ingin mengirim data ke alamat siaran, Anda harus terlebih dahulu memanggil SetSocketOption metode dan mengatur opsi soket ke SocketOptionName.Broadcast. Anda juga harus yakin bahwa jumlah byte yang dikirim tidak melebihi ukuran paket maksimum penyedia layanan yang mendasar. Jika ya, datagram tidak akan dikirim dan SendTo akan melempar SocketException.

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

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

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

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

Mengirim data ke titik akhir tertentu menggunakan SocketFlags.

public:
 int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint) As Integer

Parameter

buffer
ReadOnlySpan<Byte>

Rentang byte yang berisi data yang akan dikirim.

socketFlags
SocketFlags

Kombinasi bitwise dari SocketFlags nilai.

remoteEP
EndPoint

EndPoint yang mewakili tujuan untuk data.

Mengembalikan

Jumlah byte yang dikirim.

Pengecualian

remoteEPadalah null.

Terjadi kesalahan saat mencoba mengakses soket.

Berlaku untuk