Share via


Socket.SendTo Yöntem

Tanım

Verileri belirli bir uç noktaya gönderir.

Aşırı Yüklemeler

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

Belirtilen sayıda veriyi, arabellekte SocketFlagsbelirtilen konumdan başlayıp belirtilen kullanarak belirtilen uç noktaya gönderir.

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

Belirtilen sayıda veriyi belirtilen uç noktaya belirtilen SocketFlagskullanarak gönderir.

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

Belirtilen SocketFlagskullanarak belirli bir uç noktaya veri gönderir.

SendTo(ReadOnlySpan<Byte>, EndPoint)

Verileri belirtilen uç noktaya gönderir.

SendTo(Byte[], SocketFlags, EndPoint)

Belirtilen SocketFlagskullanarak belirli bir uç noktaya veri gönderir.

SendTo(Byte[], EndPoint)

Verileri belirtilen uç noktaya gönderir.

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

Belirtilen SocketFlagskullanarak belirli bir uç noktaya veri gönderir.

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

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

Belirtilen sayıda veriyi, arabellekte SocketFlagsbelirtilen konumdan başlayıp belirtilen kullanarak belirtilen uç noktaya gönderir.

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

Parametreler

buffer
Byte[]

Gönderilecek verileri içeren tür Byte dizisi.

offset
Int32

Veri arabelleğindeki veri göndermeye başlayabileceğiniz konum.

size
Int32

Gönderilecek bayt sayısı.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

remoteEP
EndPoint

EndPoint Verilerin hedef konumunu temsil eden.

Döndürülenler

Gönderilen bayt sayısı.

Özel durumlar

buffer, null değeridir.

-veya-

remoteEP, null değeridir.

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

-veya-

offset uzunluğundan bufferbüyük.

-veya-

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

-veya-

size parametresinin değerinden bufferoffset daha uzundur.

socketFlags geçerli bir değer bileşimi değildir.

-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, belirtilen uzak konağa bağlantısız bir veri birimi gönderir. Uzaklık, boyut ve SocketFlags yöntemine SendTo geçirilir.

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

Açıklamalar

Bu aşırı yüklemede DontRoute , parametre olarak socketflags bayrağını belirtirseniz, gönderdiğiniz veriler yönlendirilmeyecektir.

Bağlantısız bir protokol kullanıyorsanız, çağrısından SendToönce yöntemiyle Connect varsayılan bir uzak konak oluşturmanız gerekmez. Yalnızca yöntemini çağırmak Send istiyorsanız bunu yapmanız gerekir. çağırmadan önce SendToremoteEP yöntemini çağırırsanızConnect, parametresi yalnızca bu gönderme işlemi için belirtilen varsayılan uzak konağı geçersiz kılar. Temel alınan hizmet sağlayıcısı en uygun yerel ağ adresini ve bağlantı noktası numarasını atayacağından yöntemini çağırmanız Bind da gerekmez. Atanan yerel ağ adresini ve bağlantı noktası numarasını belirlemeniz gerekiyorsa, yöntemi başarıyla tamamlandıktan sonra SendTo özelliğini kullanabilirsinizLocalEndPoint.

Bağlantısız protokoller için tasarlanmış olsa da, SendTo bağlantı odaklı protokollerle de çalışır. Bağlantı odaklı bir protokol kullanıyorsanız, önce yöntemini çağırarak Connect bir uzak konak bağlantısı kurmanız veya yöntemini kullanarak Accept gelen bağlantı isteğini kabul etmeniz gerekir. Uzak konak bağlantısı kurmaz veya kabul ederseniz, SendTo bir SocketExceptionoluşturur. Yöntemini çağırmadan SendTo önce bağlantısız bir protokol için varsayılan uzak konak da oluşturabilirsiniz. Bu iki durumda da parametreyi SendToremoteEP yoksayar ve yalnızca bağlı veya varsayılan uzak konağa veri gönderir.

Engelleme yuvaları, istenen bayt sayısı gönderilene kadar engeller. Engelleyici Socket olmayan bir işlem hemen tamamlandığından, tek bir işlemde istenen tüm baytları göndermeyebilir. Gönderilen bayt sayısını izlemek ve uygulama istenen bayt sayısını gönderene kadar işlemi yeniden denemek sizin uygulamalarınızın sorumluluğundadır. Ayrıca, gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için temel alınan sistem, önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin SendTo başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.

Engelleme modunda bağlantısız bir protokol kullanıyorsanız, SendTo veri birimi gönderilene kadar engeller. Bir yayın adresine veri göndermek istiyorsanız, önce yöntemini çağırmanız SetSocketOption ve yuva seçeneğini olarak SocketOptionName.Broadcastayarlamanız gerekir. Boyutun, temel alınan hizmet sağlayıcısının paket boyutu üst sınırını aşmadığından da emin olmalısınız. Gönderiliyorsa, veri birimi gönderilmez ve SendTo bir SocketExceptionoluşturur.

Not

bir alırsanız, belirli bir SocketExceptionhata kodunu almak için özelliğini kullanın SocketException.ErrorCode . Bu kodu aldıktan sonra, hatanın ayrıntılı açıklaması için Windows Yuvaları sürüm 2 API hata kodu belgelerine bakın.

Not

Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.

Ayrıca bkz.

Şunlara uygulanır

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

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

Belirtilen bayt sayısını belirtilen kullanarak belirtilen uç noktaya SocketFlagsgönderir.

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

Parametreler

buffer
Byte[]

Gönderilecek verileri içeren tür Byte dizisi.

size
Int32

Gönderilecek bayt sayısı.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

remoteEP
EndPoint

EndPoint Verilerin hedef konumunu temsil eden.

Döndürülenler

Gönderilen bayt sayısı.

Özel durumlar

buffer, null değeridir.

-veya-

remoteEP, null değeridir.

Belirtilen size boyutu bufferaşıyor.

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

Örnekler

Aşağıdaki kod örneği, belirtilen uzak konağa bağlantısız bir veri birimi gönderir. boyutu ve SocketFlags yöntemine SendTo geçirilir.

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

Açıklamalar

Bu aşırı yüklemede arabellek uzaklığı varsayılan olarak 0'dır. Parametre olarak socketflags bayrağını DontRoute belirtirseniz, gönderdiğiniz veriler yönlendirilmeyecektir.

Bağlantısız bir protokol kullanıyorsanız, çağrısından SendToönce yöntemiyle Connect varsayılan bir uzak konak oluşturmanız gerekmez. Yalnızca yöntemini çağırmak Send istiyorsanız bunu yapmanız gerekir. çağırmadan önce SendToremoteEP yöntemini çağırırsanızConnect, parametresi yalnızca bu gönderme işlemi için belirtilen varsayılan uzak konağı geçersiz kılar. Temel alınan hizmet sağlayıcısı en uygun yerel ağ adresini ve bağlantı noktası numarasını atayacağından yöntemini çağırmanız Bind da gerekmez. Atanan yerel ağ adresini ve bağlantı noktası numarasını belirlemeniz gerekiyorsa, yöntemi başarıyla tamamlandıktan sonra SendTo özelliğini kullanabilirsinizLocalEndPoint.

Bağlantısız protokoller için tasarlanmış olsa da, SendTo bağlantı odaklı protokollerle de çalışır. Bağlantı odaklı bir protokol kullanıyorsanız, önce yöntemini çağırarak Connect bir uzak konak bağlantısı kurmanız veya yöntemini kullanarak Accept gelen bağlantı isteğini kabul etmeniz gerekir. Uzak konak bağlantısı kurmaz veya kabul ederseniz, SendTo bir SocketExceptionoluşturur. Yöntemini çağırmadan SendTo önce bağlantısız bir protokol için varsayılan uzak konak da oluşturabilirsiniz. Bu iki durumda da parametreyi SendToremoteEP yoksayar ve yalnızca bağlı veya varsayılan uzak konağa veri gönderir.

Engelleme yuvaları, istenen bayt sayısı gönderilene kadar engeller. Engellemeyi kaldırma Socket işlemi hemen tamamlandığından, tek bir işlemde istenen tüm baytları göndermeyebilir. Gönderilen bayt sayısını izlemek ve uygulama istenen bayt sayısını gönderene kadar işlemi yeniden denemek uygulamanızın sorumluluğundadır. Ayrıca, gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için temel alınan sistem, önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin SendTo başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.

Engelleme modunda bağlantısız bir protokol kullanıyorsanız, SendTo veri birimi gönderilene kadar engeller. Bir yayın adresine veri göndermek istiyorsanız, önce yöntemini çağırmanız SetSocketOption ve yuva seçeneğini olarak SocketOptionName.Broadcastayarlamanız gerekir. Ayrıca, gönderilen bayt sayısının temel alınan hizmet sağlayıcısının en büyük paket boyutunu aşmadığından da emin olmalısınız. Bunu yaparsa, veri birimi gönderilmez ve SendTo bir SocketExceptionoluşturur.

Not

bir alırsanız, belirli bir SocketExceptionhata kodunu almak için özelliğini kullanın SocketException.ErrorCode . Bu kodu aldıktan sonra, hatanın ayrıntılı açıklaması için Windows Yuvaları sürüm 2 API hata kodu belgelerine bakın.

Not

Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.

Ayrıca bkz.

Şunlara uygulanır

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

Kaynak:
Socket.cs
Kaynak:
Socket.cs

Belirtilen SocketFlagskullanarak belirli bir uç noktaya veri gönderir.

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

Parametreler

buffer
ReadOnlySpan<Byte>

Gönderilecek verileri içeren bayt aralığı.

socketFlags
SocketFlags

Verileri gönderirken kullanılacak değerlerin bit düzeyinde birleşimi SocketFlags .

socketAddress
SocketAddress

SocketAddress Verilerin hedefini temsil eden.

Döndürülenler

Gönderilen bayt sayısı.

Özel durumlar

socketAddress, null değeridir.

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

Şunlara uygulanır

SendTo(ReadOnlySpan<Byte>, EndPoint)

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

Verileri belirtilen uç noktaya gönderir.

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

Parametreler

buffer
ReadOnlySpan<Byte>

Gönderilecek verileri içeren bayt aralığı.

remoteEP
EndPoint

EndPoint Verilerin hedefini temsil eden.

Döndürülenler

Gönderilen bayt sayısı.

Özel durumlar

remoteEP, null değeridir.

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

Şunlara uygulanır

SendTo(Byte[], SocketFlags, EndPoint)

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

Belirtilen SocketFlagskullanarak belirli bir uç noktaya veri gönderir.

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

Parametreler

buffer
Byte[]

Gönderilecek verileri içeren tür Byte dizisi.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

remoteEP
EndPoint

EndPoint Verilerin hedef konumunu temsil eden.

Döndürülenler

Gönderilen bayt sayısı.

Özel durumlar

buffer, null değeridir.

-veya-

remoteEP, null değeridir.

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

Örnekler

Aşağıdaki kod örneği, belirtilen uzak konağa bağlantısız bir veri birimi gönderir. SocketFlags yöntemine SendTo geçirilir.

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

Açıklamalar

Bu aşırı yüklemede arabellek uzaklığı varsayılan olarak 0'dır ve gönderilecek bayt sayısı varsayılan olarak boyutunu belirtir buffer. Parametre olarak socketflags bayrağını DontRoute belirtirseniz, gönderdiğiniz veriler yönlendirilmeyecek.

Bağlantısız bir protokol kullanıyorsanız, çağrısından SendToönce yöntemiyle Connect varsayılan bir uzak konak oluşturmanız gerekmez. Yalnızca yöntemini çağırmak Send istiyorsanız bunu yapmanız gerekir. çağırmadan SendToremoteEP önce yöntemini çağırırsanızConnect, parametresi yalnızca bu gönderme işlemi için belirtilen varsayılan uzak konağı geçersiz kılar. Temel alınan hizmet sağlayıcısı en uygun yerel ağ adresini ve bağlantı noktası numarasını atayacağından yöntemini çağırmanız Bind da gerekmez. Atanan yerel ağ adresini ve bağlantı noktası numarasını tanımlamanız gerekiyorsa, yöntemi başarıyla tamamlandıktan sonra SendTo özelliğini kullanabilirsinizLocalEndPoint.

Bağlantısız protokoller için tasarlanmış olsa da, SendTo bağlantı odaklı protokollerle de çalışır. Bağlantı odaklı bir protokol kullanıyorsanız, önce yöntemini çağırarak Connect bir uzak konak bağlantısı kurmanız veya yöntemini kullanarak Accept gelen bağlantı isteğini kabul etmelisiniz. Uzak konak bağlantısı kuramaz veya kabul ederseniz, SendTo bir SocketExceptionoluşturur. Yöntemini çağırmadan SendTo önce bağlantısız bir protokol için varsayılan uzak konak da oluşturabilirsiniz. Bu iki durumda da parametreyi SendToremoteEP yoksayar ve yalnızca bağlı veya varsayılan uzak konağa veri gönderir.

Engelleme yuvaları, istenen içindeki tüm baytlar buffer gönderilene kadar engeller. Engellemeyi Socket kaldırma işlemi hemen tamamlandığından içindeki tüm baytları buffergöndermeyebilir. Gönderilen bayt sayısını izlemek ve uygulama içindeki tüm baytları gönderene kadar işlemi yeniden denemek uygulamanızın sorumluluğundadır buffer. Ayrıca, gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için, temel alınan sistem önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin SendTo başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.

Engelleme modunda bağlantısız bir protokol kullanıyorsanız, SendTo veri birimi gönderilene kadar engeller. Yayın adresine veri göndermek istiyorsanız, önce yöntemini çağırmanız SetSocketOption ve yuva seçeneğini olarak SocketOptionName.Broadcastayarlamanız gerekir. Ayrıca, gönderilen bayt sayısının temel alınan hizmet sağlayıcısının en büyük paket boyutunu aşmadığından da emin olmalısınız. Bunu yaparsa, veri birimi gönderilmez ve SendTo bir SocketExceptionoluşturur.

Not

bir alırsanız, belirli bir SocketExceptionhata kodunu almak için özelliğini kullanın SocketException.ErrorCode . Bu kodu aldıktan sonra, hatanın ayrıntılı açıklaması için Windows Yuvaları sürüm 2 API hata kodu belgelerine bakın.

Not

Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.

Ayrıca bkz.

Şunlara uygulanır

SendTo(Byte[], EndPoint)

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

Verileri belirtilen uç noktaya gönderir.

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

Parametreler

buffer
Byte[]

Gönderilecek verileri içeren tür Byte dizisi.

remoteEP
EndPoint

EndPoint Verilerin hedefini temsil eden.

Döndürülenler

Gönderilen bayt sayısı.

Özel durumlar

buffer, null değeridir.

-veya-

remoteEP, null değeridir.

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

Örnekler

Aşağıdaki kod örneği, belirtilen uzak konağa bağlantısız bir veri birimi gönderir.

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

Açıklamalar

Bu aşırı yüklemede arabellek uzaklığı varsayılan olarak 0, gönderilecek bayt sayısı varsayılan olarak parametresinin buffer boyutuna, SocketFlags değer ise varsayılan olarak 0'a ayarlı olur.

Bağlantısız bir protokol kullanıyorsanız, çağrısından SendToönce yöntemiyle Connect varsayılan bir uzak konak oluşturmanız gerekmez. Yalnızca yöntemini çağırmak Send istiyorsanız bunu yapmanız gerekir. çağırmadan SendToremoteEP önce yöntemini çağırırsanızConnect, parametresi yalnızca bu gönderme işlemi için belirtilen varsayılan uzak konağı geçersiz kılar. Temel alınan hizmet sağlayıcısı en uygun yerel ağ adresini ve bağlantı noktası numarasını atayacağından yöntemini çağırmanız Bind da gerekmez. Atanan yerel ağ adresini ve bağlantı noktası numarasını tanımlamanız gerekiyorsa, yöntemi başarıyla tamamlandıktan sonra SendTo özelliğini kullanabilirsinizLocalEndPoint.

Bağlantısız protokoller için tasarlanmış olsa da, SendTo bağlantı odaklı protokollerle de çalışır. Bağlantı odaklı bir protokol kullanıyorsanız, önce yöntemini çağırarak Connect bir uzak konak bağlantısı kurmanız veya yöntemini kullanarak Accept gelen bağlantı isteğini kabul etmelisiniz. Uzak konak bağlantısı kuramaz veya kabul ederseniz, SendTo bir SocketExceptionoluşturur. Yöntemini çağırmadan SendTo önce bağlantısız bir protokol için varsayılan uzak konak da oluşturabilirsiniz. Bu iki durumda da parametreyi SendToremoteEP yoksayar ve yalnızca bağlı veya varsayılan uzak konağa veri gönderir.

Engelleme yuvaları, arabellekteki tüm baytlar gönderilene kadar engeller. Engellemeyi Socket kaldırma işlemi hemen tamamlandığından içindeki tüm baytları buffergöndermeyebilir. Gönderilen bayt sayısını izlemek ve uygulama içindeki tüm baytları gönderene kadar işlemi yeniden denemek uygulamanızın sorumluluğundadır buffer. Ayrıca, gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için, temel alınan sistem önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin SendTo başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.

Engelleme modunda bağlantısız bir protokol kullanıyorsanız, SendTo veri birimi gönderilene kadar engeller. Yayın adresine veri göndermek istiyorsanız, önce yöntemini çağırmanız SetSocketOption ve yuva seçeneğini olarak SocketOptionName.Broadcastayarlamanız gerekir. Ayrıca, gönderilen bayt sayısının temel alınan hizmet sağlayıcısının en büyük paket boyutunu aşmadığından da emin olmalısınız. Bunu yaparsa, veri birimi gönderilmez ve SendTo bir SocketExceptionoluşturur.

Not

bir alırsanız, belirli bir SocketExceptionhata kodunu almak için özelliğini kullanın SocketException.ErrorCode . Bu kodu aldıktan sonra, hatanın ayrıntılı açıklaması için Windows Yuvaları sürüm 2 API hata kodu belgelerine bakın.

Not

Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.

Ayrıca bkz.

Şunlara uygulanır

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

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

Belirtilen SocketFlagskullanarak belirli bir uç noktaya veri gönderir.

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

Parametreler

buffer
ReadOnlySpan<Byte>

Gönderilecek verileri içeren bayt aralığı.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

remoteEP
EndPoint

EndPoint Verilerin hedefini temsil eden.

Döndürülenler

Gönderilen bayt sayısı.

Özel durumlar

remoteEP, null değeridir.

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

Şunlara uygulanır