Socket.SendTo Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
- 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 .
Döndürülenler
Gönderilen bayt sayısı.
Özel durumlar
offset
0'dan küçüktür.
-veya-
offset
uzunluğundan buffer
büyük.
-veya-
size
0'dan küçüktür.
-veya-
size
parametresinin değerinden buffer
offset
daha uzundur.
socketFlags
geçerli bir değer bileşimi değildir.
-veya-
öğesine erişilirken Socketbir işletim sistemi hatası oluşur.
Kapatılmış Socket .
Çağrı yığınındaki bir çağıranın gerekli izinleri yok.
Örnekler
Aşağıdaki kod örneği, 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.
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Ş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
- size
- Int32
Gönderilecek bayt sayısı.
- socketFlags
- SocketFlags
Değerlerin bit düzeyinde birleşimi SocketFlags .
Döndürülenler
Gönderilen bayt sayısı.
Özel durumlar
Belirtilen size
boyutu buffer
aşıyor.
Yuvaya erişmeye çalışılırken bir hata oluştu.
Kapatılmış Socket .
Ö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.
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Ş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.
Kapatılmış Socket .
Ş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ığı.
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.
Kapatılmış Socket .
Ş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
- socketFlags
- SocketFlags
Değerlerin bit düzeyinde birleşimi SocketFlags .
Döndürülenler
Gönderilen bayt sayısı.
Özel durumlar
Yuvaya erişmeye çalışılırken bir hata oluştu.
Kapatılmış Socket .
Ö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ı buffer
gö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.
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Ş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
Döndürülenler
Gönderilen bayt sayısı.
Özel durumlar
Yuvaya erişmeye çalışılırken bir hata oluştu.
Kapatılmış Socket .
Ö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ı buffer
gö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.
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Ş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 .
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.
Kapatılmış Socket .