Socket.SendTo Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Sendet Daten an einen bestimmten Endpunkt.
Überlädt
SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint) |
Sendet die angegebene Anzahl von Datenbytes an den angegebenen Endpunkt und beginnt dabei an der angegebenen Position im Puffer, wobei die angegebenen SocketFlags verwendet werden. |
SendTo(Byte[], Int32, SocketFlags, EndPoint) |
Sendet die angegebene Anzahl von Datenbytes an den angegebenen Endpunkt, wobei die angegebenen SocketFlags verwendet werden. |
SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress) |
Sendet Daten an einen bestimmten Endpunkt unter Verwendung der angegebenen SocketFlags. |
SendTo(ReadOnlySpan<Byte>, EndPoint) |
Sendet Daten an den angegebenen Endpunkt. |
SendTo(Byte[], SocketFlags, EndPoint) |
Sendet Daten an einen bestimmten Endpunkt unter Verwendung der angegebenen SocketFlags. |
SendTo(Byte[], EndPoint) |
Sendet Daten an den angegebenen Endpunkt. |
SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint) |
Sendet Daten an einen bestimmten Endpunkt unter Verwendung der angegebenen SocketFlags. |
SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet die angegebene Anzahl von Datenbytes an den angegebenen Endpunkt und beginnt dabei an der angegebenen Position im Puffer, wobei die angegebenen SocketFlags verwendet werden.
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
- offset
- Int32
Die Position im Datenpuffer, an der mit dem Senden von Daten begonnen werden soll.
- size
- Int32
Die Anzahl von Bytes, die gesendet werden sollen.
- socketFlags
- SocketFlags
Eine bitweise Kombination der SocketFlags-Werte.
Gibt zurück
Die Anzahl der gesendeten Bytes.
Ausnahmen
offset
ist kleiner als 0.
- oder -
offset
ist größer als die Länge von buffer
.
- oder -
size
ist kleiner als 0.
- oder -
size
ist größer als die Länge von buffer
minus dem Wert des offset
-Parameters.
socketFlags
ist keine gültige Kombination von Werten.
- oder -
Beim Zugriff auf den Socket tritt ein Betriebssystemfehler auf.
Der Socket wurde geschlossen.
Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.
Beispiele
Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remotehost gesendet. Der Offset, die Größe und SocketFlags werden an die SendTo -Methode übergeben.
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
Hinweise
Wenn Sie in dieser Überladung das DontRoute Flag als socketflags
Parameter angeben, werden die gesendeten Daten nicht weitergeleitet.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie keinen Standard-Remotehost mit der Connect -Methode einrichten, bevor Sie aufrufen SendTo. Sie müssen dies nur tun, wenn Sie die Send -Methode aufrufen möchten. Wenn Sie die Connect -Methode vor dem Aufrufen SendToaufrufen, überschreibt der remoteEP
Parameter den angegebenen Standard-Remotehost nur für diesen Sendevorgang. Sie müssen die Bind Methode auch nicht aufrufen, da der zugrunde liegende Dienstanbieter die am besten geeignete lokale Netzwerkadresse und Portnummer zuweisen wird. Wenn Sie die zugewiesene lokale Netzwerkadresse und Portnummer identifizieren müssen, können Sie die LocalEndPoint -Eigenschaft verwenden, nachdem die SendTo Methode erfolgreich abgeschlossen wurde.
Obwohl für verbindungslose Protokolle vorgesehen, SendTo funktioniert es auch mit verbindungsorientierten Protokollen. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie zunächst eine Remotehostverbindung herstellen, indem Sie die Connect -Methode aufrufen oder eine eingehende Verbindungsanforderung mit der Accept -Methode akzeptieren. Wenn Sie keine Remotehostverbindung herstellen oder akzeptieren, SendTo löst ein aus SocketException. Sie können auch einen Standard-Remotehost für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo Methode aufrufen. Ignoriert in beiden Fällen den remoteEP
Parameter und SendTo sendet nur Daten an den verbundenen oder standardfernen Host.
Blockierende Sockets werden blockiert, bis die angeforderte Anzahl von Bytes gesendet wird. Da eine nicht blockierende Socket Datei sofort abgeschlossen wird, werden möglicherweise nicht alle angeforderten Bytes in einem einzelnen Vorgang gesendet. Es liegt in Ihrer Verantwortung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die angeforderte Anzahl von Bytes sendet. Es gibt auch keine Garantie, dass die von Ihnen gesendeten Daten sofort im Netzwerk angezeigt werden. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine erhebliche Menge auslaufende Daten gesammelt wird. Ein erfolgreicher Abschluss der SendTo Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für ein Netzwerk sendet.
Wenn Sie ein verbindungsloses Protokoll im Blockierungsmodus verwenden, wird blockiert, SendTo bis das Datagramm gesendet wird. Wenn Sie Daten an eine Broadcastadresse senden möchten, müssen Sie zuerst die SetSocketOption -Methode aufrufen und die Socketoption auf SocketOptionName.Broadcastfestlegen. Außerdem müssen Sie sicherstellen, dass die Größe die maximale Paketgröße des zugrunde liegenden Dienstanbieters nicht überschreitet. Wenn dies der Fall ist, wird das Datagramm nicht gesendet und SendTo löst einen aus SocketException.
Hinweis
Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie eine ausführliche Beschreibung des Fehlers in der Dokumentation zur Windows Sockets-API, Version 2 .
Hinweis
Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.
Weitere Informationen
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Gilt für:
SendTo(Byte[], Int32, SocketFlags, EndPoint)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet die angegebene Anzahl von Datenbytes an den angegebenen Endpunkt, wobei die angegebenen SocketFlags verwendet werden.
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
- size
- Int32
Die Anzahl von Bytes, die gesendet werden sollen.
- socketFlags
- SocketFlags
Eine bitweise Kombination der SocketFlags-Werte.
Gibt zurück
Die Anzahl der gesendeten Bytes.
Ausnahmen
Die angegebene size
ist größer als buffer
.
Fehler beim Versuch, auf den Socket zuzugreifen.
Der Socket wurde geschlossen.
Beispiele
Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remotehost gesendet. Die Größe und SocketFlags werden an die SendTo -Methode übergeben.
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
Hinweise
In dieser Überladung ist der Pufferoffset standardmäßig auf 0 festgelegt. Wenn Sie das DontRoute Flag als socketflags
Parameter angeben, werden die gesendeten Daten nicht weitergeleitet.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie keinen Standard-Remotehost mit der Connect -Methode einrichten, bevor Sie aufrufen SendTo. Sie müssen dies nur tun, wenn Sie die Send -Methode aufrufen möchten. Wenn Sie die Connect -Methode vor dem Aufrufen SendToaufrufen, überschreibt der remoteEP
Parameter den angegebenen Standard-Remotehost nur für diesen Sendevorgang. Sie müssen die Bind Methode auch nicht aufrufen, da der zugrunde liegende Dienstanbieter die am besten geeignete lokale Netzwerkadresse und Portnummer zuweisen wird. Wenn Sie die zugewiesene lokale Netzwerkadresse und Portnummer identifizieren müssen, können Sie die LocalEndPoint -Eigenschaft verwenden, nachdem die SendTo Methode erfolgreich abgeschlossen wurde.
Obwohl für verbindungslose Protokolle vorgesehen, SendTo funktioniert es auch mit verbindungsorientierten Protokollen. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie zunächst eine Remotehostverbindung herstellen, indem Sie die Connect -Methode aufrufen oder eine eingehende Verbindungsanforderung mit der Accept -Methode akzeptieren. Wenn Sie keine Remotehostverbindung herstellen oder akzeptieren, SendTo löst ein aus SocketException. Sie können auch einen Standard-Remotehost für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo Methode aufrufen. Ignoriert in beiden Fällen den remoteEP
Parameter und SendTo sendet nur Daten an den verbundenen oder standardfernen Host.
Blockierende Sockets werden blockiert, bis die angeforderte Anzahl von Bytes gesendet wird. Da eine Nichtblockierung Socket sofort abgeschlossen wird, werden möglicherweise nicht alle angeforderten Bytes in einem einzelnen Vorgang gesendet. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die angeforderte Anzahl von Bytes sendet. Es gibt auch keine Garantie, dass die von Ihnen gesendeten Daten sofort im Netzwerk angezeigt werden. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine erhebliche Menge auslaufende Daten gesammelt wird. Ein erfolgreicher Abschluss der SendTo Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für ein Netzwerk sendet.
Wenn Sie ein verbindungsloses Protokoll im Blockierungsmodus verwenden, wird blockiert, SendTo bis das Datagramm gesendet wird. Wenn Sie Daten an eine Broadcastadresse senden möchten, müssen Sie zuerst die SetSocketOption -Methode aufrufen und die Socketoption auf SocketOptionName.Broadcastfestlegen. Sie müssen auch sicherstellen, dass die Anzahl der gesendeten Bytes die maximale Paketgröße des zugrunde liegenden Dienstanbieters nicht überschreitet. Wenn dies der Fall ist, wird das Datagramm nicht gesendet und SendTo löst eine aus SocketException.
Hinweis
Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie in der Dokumentation zu Windows Sockets Version 2-API-Fehlercode eine ausführliche Beschreibung des Fehlers.
Hinweis
Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.
Weitere Informationen
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Gilt für:
SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet Daten an einen bestimmten Endpunkt unter Verwendung der angegebenen 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>
Eins Spanne von Bytes, die die zu sendenden Daten enthält.
- socketFlags
- SocketFlags
Eine bitweise Kombination der SocketFlags Werte, die beim Senden der Daten verwendet werden.
- socketAddress
- SocketAddress
Der SocketAddress, der das Ziel der Daten darstellt.
Gibt zurück
Die Anzahl der gesendeten Bytes.
Ausnahmen
socketAddress
ist null
.
Fehler beim Versuch, auf den Socket zuzugreifen.
Der Socket wurde geschlossen.
Gilt für:
SendTo(ReadOnlySpan<Byte>, EndPoint)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet Daten an den angegebenen Endpunkt.
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>
Eins Spanne von Bytes, die die zu sendenden Daten enthält.
Gibt zurück
Die Anzahl der gesendeten Bytes.
Ausnahmen
remoteEP
ist null
.
Fehler beim Versuch, auf den Socket zuzugreifen.
Der Socket wurde geschlossen.
Gilt für:
SendTo(Byte[], SocketFlags, EndPoint)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet Daten an einen bestimmten Endpunkt unter Verwendung der angegebenen 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
- socketFlags
- SocketFlags
Eine bitweise Kombination der SocketFlags-Werte.
Gibt zurück
Die Anzahl der gesendeten Bytes.
Ausnahmen
Fehler beim Versuch, auf den Socket zuzugreifen.
Der Socket wurde geschlossen.
Beispiele
Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remotehost gesendet. SocketFlags werden an die SendTo -Methode übergeben.
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
Hinweise
In dieser Überladung ist der Pufferoffset standardmäßig auf 0 festgelegt, und die Anzahl der Zu sendenden Bytes entspricht der Größe von buffer
. Wenn Sie das DontRoute Flag als socketflags
Parameter angeben, werden die gesendeten Daten nicht weitergeleitet.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen SendTovon keinen Standard-Remotehost mit der Connect -Methode einrichten. Sie müssen dies nur tun, wenn Sie beabsichtigen, die Send -Methode aufzurufen. Wenn Sie die Connect -Methode vor dem Aufrufen SendToaufrufen, überschreibt der remoteEP
Parameter den angegebenen Standard-Remotehost nur für diesen Sendevorgang. Sie müssen die Bind -Methode auch nicht aufrufen, da der zugrunde liegende Dienstanbieter die am besten geeignete lokale Netzwerkadresse und Portnummer zuweist. Wenn Sie die zugewiesene lokale Netzwerkadresse und Portnummer identifizieren müssen, können Sie die LocalEndPoint -Eigenschaft verwenden, nachdem die SendTo Methode erfolgreich abgeschlossen wurde.
Obwohl für verbindungslose Protokolle vorgesehen, SendTo funktioniert auch mit verbindungsorientierten Protokollen. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie zunächst eine Remotehostverbindung herstellen, indem Sie die Connect -Methode aufrufen oder eine eingehende Verbindungsanforderung mit der Accept -Methode akzeptieren. Wenn Sie keine Remotehostverbindung herstellen oder akzeptieren, SendTo löst eine aus SocketException. Sie können auch einen Standard-Remotehost für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo -Methode aufrufen. In beiden Fällen ignoriert den remoteEP
Parameter und SendTo sendet daten nur an den verbundenen oder standardfernen Host.
Blockierende Sockets werden blockiert, bis alle angeforderten Bytes in gesendet buffer
werden. Da eine Nichtblockierung Socket sofort abgeschlossen wird, werden möglicherweise nicht alle Bytes im buffer
gesendet. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung alle Bytes im buffer
sendet. Es gibt auch keine Garantie, dass die von Ihnen gesendeten Daten sofort im Netzwerk angezeigt werden. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine erhebliche Menge an ausgehenden Daten gesammelt wird. Ein erfolgreicher Abschluss der SendTo Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für eine Netzwerksendung hatte.
Wenn Sie ein verbindungsloses Protokoll im Blockierungsmodus verwenden, wird blockiert, SendTo bis das Datagramm gesendet wird. Wenn Sie Daten an eine Broadcastadresse senden möchten, müssen Sie zuerst die SetSocketOption -Methode aufrufen und die Socketoption auf SocketOptionName.Broadcastfestlegen. Sie müssen auch sicherstellen, dass die Anzahl der gesendeten Bytes die maximale Paketgröße des zugrunde liegenden Dienstanbieters nicht überschreitet. Wenn dies der Fall ist, wird das Datagramm nicht gesendet und SendTo löst eine aus SocketException.
Hinweis
Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie in der Dokumentation zu Windows Sockets Version 2-API-Fehlercode eine ausführliche Beschreibung des Fehlers.
Hinweis
Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.
Weitere Informationen
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Gilt für:
SendTo(Byte[], EndPoint)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet Daten an den angegebenen Endpunkt.
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
Gibt zurück
Die Anzahl der gesendeten Bytes.
Ausnahmen
Fehler beim Versuch, auf den Socket zuzugreifen.
Der Socket wurde geschlossen.
Beispiele
Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remotehost gesendet.
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
Hinweise
In dieser Überladung ist der Pufferoffset standardmäßig auf 0 festgelegt, die Anzahl der zu sendenden Bytes entspricht der Größe des buffer
Parameters, und der SocketFlags Standardwert ist 0.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen SendTovon keinen Standard-Remotehost mit der Connect -Methode einrichten. Sie müssen dies nur tun, wenn Sie beabsichtigen, die Send -Methode aufzurufen. Wenn Sie die Connect -Methode vor dem Aufrufen SendToaufrufen, überschreibt der remoteEP
Parameter den angegebenen Standard-Remotehost nur für diesen Sendevorgang. Sie müssen die Bind -Methode auch nicht aufrufen, da der zugrunde liegende Dienstanbieter die am besten geeignete lokale Netzwerkadresse und Portnummer zuweist. Wenn Sie die zugewiesene lokale Netzwerkadresse und Portnummer identifizieren müssen, können Sie die LocalEndPoint -Eigenschaft verwenden, nachdem die SendTo Methode erfolgreich abgeschlossen wurde.
Obwohl für verbindungslose Protokolle vorgesehen, SendTo funktioniert auch mit verbindungsorientierten Protokollen. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie zunächst eine Remotehostverbindung herstellen, indem Sie die Connect -Methode aufrufen oder eine eingehende Verbindungsanforderung mit der Accept -Methode akzeptieren. Wenn Sie keine Remotehostverbindung herstellen oder akzeptieren, SendTo löst eine aus SocketException. Sie können auch einen Standard-Remotehost für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo -Methode aufrufen. In beiden Fällen ignoriert den remoteEP
Parameter und SendTo sendet daten nur an den verbundenen oder standardfernen Host.
Blockierende Sockets werden blockiert, bis alle Bytes im Puffer gesendet werden. Da eine Nichtblockierung Socket sofort abgeschlossen wird, werden möglicherweise nicht alle Bytes im buffer
gesendet. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung alle Bytes im buffer
sendet. Es gibt auch keine Garantie, dass die von Ihnen gesendeten Daten sofort im Netzwerk angezeigt werden. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine erhebliche Menge ausgehender Daten gesammelt wird. Ein erfolgreicher Abschluss der SendTo Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für eine Netzwerksendung hatte.
Wenn Sie ein verbindungsloses Protokoll im Blockierungsmodus verwenden, wird blockiert, SendTo bis das Datagramm gesendet wird. Wenn Sie Daten an eine Broadcastadresse senden möchten, müssen Sie zuerst die SetSocketOption -Methode aufrufen und die Socketoption auf SocketOptionName.Broadcastfestlegen. Sie müssen auch sicherstellen, dass die Anzahl der gesendeten Bytes die maximale Paketgröße des zugrunde liegenden Dienstanbieters nicht überschreitet. Wenn dies der Fall ist, wird das Datagramm nicht gesendet und SendTo löst eine aus SocketException.
Hinweis
Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie in der Dokumentation zu Windows Sockets Version 2-API-Fehlercode eine ausführliche Beschreibung des Fehlers.
Hinweis
Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.
Weitere Informationen
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Gilt für:
SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet Daten an einen bestimmten Endpunkt unter Verwendung der angegebenen 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>
Eins Spanne von Bytes, die die zu sendenden Daten enthält.
- socketFlags
- SocketFlags
Eine bitweise Kombination der SocketFlags-Werte.
Gibt zurück
Die Anzahl der gesendeten Bytes.
Ausnahmen
remoteEP
ist null
.
Fehler beim Versuch, auf den Socket zuzugreifen.
Der Socket wurde geschlossen.