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
| Name | Beschreibung |
|---|---|
| SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint) |
Sendet die angegebene Anzahl von Daten an den angegebenen Endpunkt, beginnend an der angegebenen Position im Puffer, und verwendet die angegebene SocketFlags. |
| SendTo(Byte[], Int32, SocketFlags, EndPoint) |
Sendet die angegebene Anzahl von Byte von Daten mithilfe des angegebenen SocketFlagsEndpunkts an den angegebenen Endpunkt. |
| SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress) |
Sendet Daten mithilfe des angegebenen SocketFlagsEndpunkts an einen bestimmten Endpunkt. |
| SendTo(ReadOnlySpan<Byte>, EndPoint) |
Sendet Daten an den angegebenen Endpunkt. |
| SendTo(Byte[], SocketFlags, EndPoint) |
Sendet Daten mithilfe des angegebenen SocketFlagsEndpunkts an einen bestimmten Endpunkt. |
| SendTo(Byte[], EndPoint) |
Sendet Daten an den angegebenen Endpunkt. |
| SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint) |
Sendet Daten mithilfe des angegebenen SocketFlagsEndpunkts an einen bestimmten Endpunkt. |
SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet die angegebene Anzahl von Daten an den angegebenen Endpunkt, beginnend an der angegebenen Position im Puffer, und verwendet die angegebene 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
- offset
- Int32
Die Position im Datenpuffer, an der mit dem Senden von Daten begonnen werden soll.
- size
- Int32
Die Anzahl der zu sendenden Bytes.
- 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 minus buffer des Werts des offset Parameters.
socketFlags ist keine gültige Kombination von Werten.
- oder -
Beim Zugriff auf das SocketBetriebssystem tritt ein Fehler auf.
Das Socket wurde geschlossen.
Ein Aufrufer im Aufrufstapel 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 die Übergabe an die SendTo Methode.
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 vor dem Aufrufen SendTokeinen Standard-Remotehost mit der Connect Methode einrichten. 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 nur den angegebenen Standard-Remotehost 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 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 mithilfe der Accept Methode akzeptieren. Wenn Sie keine Remotehostverbindung herstellen oder akzeptieren, SendTo wird eine SocketException. Sie können auch einen Standard-Remotehost für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo Methode aufrufen. In einem dieser Fälle SendTo wird der remoteEP Parameter ignoriert und nur Daten an den verbundenen oder Standard-Remotehost gesendet.
Das Blockieren von Sockets wird blockiert, bis die angeforderte Anzahl von Bytes gesendet wird. Da eine nicht blockierende Socket Funktion sofort abgeschlossen wird, sendet sie möglicherweise nicht alle bytes, die in einem einzigen Vorgang angefordert wurden. Es liegt in Ihrer Verantwortung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang erneut zu wiederholen, bis die Anwendung die angeforderte Anzahl von Bytes sendet. Es gibt auch keine Garantie dafür, dass die 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 laufenden Daten gesammelt wird. Ein erfolgreicher Abschluss der SendTo Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
Wenn Sie ein verbindungsloses Protokoll im Blockierungsmodus verwenden, wird blockiert, SendTo bis das Datagramm gesendet wird. Wenn Sie Daten an eine Übertragungsadresse senden möchten, müssen Sie zuerst die SetSocketOption Methode aufrufen und die Socketoption auf SocketOptionName.Broadcastfestlegen. Sie müssen auch 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 ein SocketException.
Hinweis
Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.
Hinweis
Dieses Mitglied gibt Protokollierungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Network Tracing 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
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet die angegebene Anzahl von Byte von Daten mithilfe des angegebenen SocketFlagsEndpunkts an den angegebenen Endpunkt.
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 der zu sendenden Bytes.
- socketFlags
- SocketFlags
Eine bitweise Kombination der SocketFlags Werte.
Gibt zurück
Die Anzahl der gesendeten Bytes.
Ausnahmen
Der angegebene size Wert überschreitet die Größe von buffer.
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Das 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.
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 wird der Pufferversatz standardmäßig auf 0 festgelegt. Wenn Sie das DontRoute Kennzeichen als socketflags Parameter angeben, werden die gesendeten Daten nicht weitergeleitet.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen SendTokeinen Standard-Remotehost mit der Connect Methode einrichten. 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 nur den angegebenen Standard-Remotehost 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 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 mithilfe der Accept Methode akzeptieren. Wenn Sie keine Remotehostverbindung herstellen oder akzeptieren, SendTo wird eine SocketException. Sie können auch einen Standard-Remotehost für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo Methode aufrufen. In einem dieser Fälle SendTo wird der remoteEP Parameter ignoriert und nur Daten an den verbundenen oder Standard-Remotehost gesendet.
Das Blockieren von Sockets wird blockiert, bis die angeforderte Anzahl von Bytes gesendet wird. Da eine Nichtblockierung Socket sofort abgeschlossen ist, sendet sie möglicherweise nicht alle in einem einzigen Vorgang angeforderten Bytes. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang erneut zu wiederholen, bis die Anwendung die angeforderte Anzahl von Bytes sendet. Es gibt auch keine Garantie dafür, dass die 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 laufenden Daten gesammelt wird. Ein erfolgreicher Abschluss der SendTo Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
Wenn Sie ein verbindungsloses Protokoll im Blockierungsmodus verwenden, wird blockiert, SendTo bis das Datagramm gesendet wird. Wenn Sie Daten an eine Übertragungsadresse 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 ein SocketException.
Hinweis
Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.
Hinweis
Dieses Mitglied gibt Protokollierungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Network Tracing 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
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet Daten mithilfe des angegebenen SocketFlagsEndpunkts an einen bestimmten Endpunkt.
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>
Eine 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
Dies SocketAddress stellt das Ziel für die Daten dar.
Gibt zurück
Die Anzahl der gesendeten Bytes.
Ausnahmen
socketAddress ist null.
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Das Socket wurde geschlossen.
Gilt für:
SendTo(ReadOnlySpan<Byte>, EndPoint)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- 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>
Eine Spanne von Bytes, die die zu sendenden Daten enthält.
Gibt zurück
Die Anzahl der gesendeten Bytes.
Ausnahmen
remoteEP ist null.
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Das Socket wurde geschlossen.
Gilt für:
SendTo(Byte[], SocketFlags, EndPoint)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet Daten mithilfe des angegebenen SocketFlagsEndpunkts an einen bestimmten Endpunkt.
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
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Das Socket wurde geschlossen.
Beispiele
Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remotehost gesendet. SocketFlags werden an die SendTo Methode übergeben.
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 wird der Puffer standardmäßig auf 0 versetzt, und die Anzahl der Bytes, die standardmäßig an die Größe der buffer. Wenn Sie das DontRoute Kennzeichen als socketflags Parameter angeben, werden die gesendeten Daten nicht weitergeleitet.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen SendTokeinen Standard-Remotehost mit der Connect Methode einrichten. 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 nur den angegebenen Standard-Remotehost 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 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 mithilfe der Accept Methode akzeptieren. Wenn Sie keine Remotehostverbindung herstellen oder akzeptieren, SendTo wird eine SocketException. Sie können auch einen Standard-Remotehost für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo Methode aufrufen. In einem dieser Fälle SendTo wird der remoteEP Parameter ignoriert und nur Daten an den verbundenen oder Standard-Remotehost gesendet.
Das Blockieren von Sockets wird blockiert, bis die angeforderten Bytes in der buffer Leiste gesendet werden. Da eine Nichtblockierung Socket sofort abgeschlossen ist, sendet sie möglicherweise nicht alle Bytes in der buffer. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang erneut zu wiederholen, bis die Anwendung alle Bytes in der bufferAnwendung sendet. Es gibt auch keine Garantie dafür, dass die 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 laufenden Daten gesammelt wird. Ein erfolgreicher Abschluss der SendTo Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
Wenn Sie ein verbindungsloses Protokoll im Blockierungsmodus verwenden, wird blockiert, SendTo bis das Datagramm gesendet wird. Wenn Sie Daten an eine Übertragungsadresse 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 ein SocketException.
Hinweis
Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.
Hinweis
Dieses Mitglied gibt Protokollierungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Network Tracing 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
- 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
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Das Socket wurde geschlossen.
Beispiele
Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remotehost gesendet.
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 wird der Pufferversatz standardmäßig auf 0, die Anzahl der Bytes, die standardmäßig an die Größe des buffer Parameters gesendet werden sollen, und der SocketFlags Standardwert ist 0.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen SendTokeinen Standard-Remotehost mit der Connect Methode einrichten. 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 nur den angegebenen Standard-Remotehost 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 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 mithilfe der Accept Methode akzeptieren. Wenn Sie keine Remotehostverbindung herstellen oder akzeptieren, SendTo wird eine SocketException. Sie können auch einen Standard-Remotehost für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo Methode aufrufen. In einem dieser Fälle SendTo wird der remoteEP Parameter ignoriert und nur Daten an den verbundenen oder Standard-Remotehost gesendet.
Das Blockieren von Sockets wird blockiert, bis alle Bytes im Puffer gesendet werden. Da eine Nichtblockierung Socket sofort abgeschlossen ist, sendet sie möglicherweise nicht alle Bytes in der buffer. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang erneut zu wiederholen, bis die Anwendung alle Bytes in der bufferAnwendung sendet. Es gibt auch keine Garantie dafür, dass die 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 der Daten für ein Netzwerk-Senden hatte.
Wenn Sie ein verbindungsloses Protokoll im Blockierungsmodus verwenden, wird blockiert, SendTo bis das Datagramm gesendet wird. Wenn Sie Daten an eine Übertragungsadresse 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 ein SocketException.
Hinweis
Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.
Hinweis
Dieses Mitglied gibt Protokollierungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Network Tracing 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
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet Daten mithilfe des angegebenen SocketFlagsEndpunkts an einen bestimmten Endpunkt.
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>
Eine 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.
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Das Socket wurde geschlossen.