Socket.Send 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 eine verbundene Socket.
Überlädt
| Name | Beschreibung |
|---|---|
| Send(ReadOnlySpan<Byte>, SocketFlags, SocketError) |
Sendet Daten mithilfe Socket der angegebenen SocketFlags. |
| Send(ReadOnlySpan<Byte>) |
Sendet Daten an eine verbundene Socket. |
| Send(Byte[], Int32, Int32, SocketFlags, SocketError) |
Sendet die angegebene Anzahl von Bytes von Daten an eine verbundene Socket, beginnend mit dem angegebenen Offset und die Verwendung der angegebenen SocketFlags. |
| Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError) |
Sendet den Satz von Puffern in der Liste an eine verbundene Socket, mithilfe der angegebenen SocketFlags. |
| Send(Byte[], Int32, Int32, SocketFlags) |
Sendet die angegebene Anzahl von Bytes von Daten an eine verbundene Socket, beginnend mit dem angegebenen Offset und die Verwendung der angegebenen SocketFlags. |
| Send(Byte[], Int32, SocketFlags) |
Sendet die angegebene Anzahl von Byte von Daten an eine verbundene Socket, mithilfe der angegebenen SocketFlags. |
| Send(IList<ArraySegment<Byte>>) |
Sendet den Satz von Puffern in der Liste an eine verbundene Socket. |
| Send(IList<ArraySegment<Byte>>, SocketFlags) |
Sendet den Satz von Puffern in der Liste an eine verbundene Socket, mithilfe der angegebenen SocketFlags. |
| Send(Byte[], SocketFlags) |
Sendet Daten mithilfe Socket der angegebenen SocketFlags. |
| Send(ReadOnlySpan<Byte>, SocketFlags) |
Sendet Daten mithilfe Socket der angegebenen SocketFlags. |
| Send(Byte[]) |
Sendet Daten an eine verbundene Socket. |
Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet Daten mithilfe Socket der angegebenen SocketFlags.
public:
int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send(ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer
Parameter
- buffer
- ReadOnlySpan<Byte>
Eine Spanne von Bytes, die die zu sendenden Daten enthält.
- socketFlags
- SocketFlags
Eine bitweise Kombination der Enumerationswerte, die Sende- und Empfangsverhalten angibt.
- errorCode
- SocketError
Wenn diese Methode zurückgegeben wird, enthält sie einen der Enumerationswerte, die Fehlercodes für den Socket definieren.
Gibt zurück
Die Anzahl der bytes, die an die Socket.
Ausnahmen
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Das Socket wurde geschlossen.
Hinweise
Send Sendet synchron Daten an den remotehost, der in der Connect Oder-Methode Accept angegeben ist, und gibt die Anzahl der erfolgreich gesendeten Bytes zurück. Send kann sowohl für verbindungsorientierte als auch für verbindungslose Protokolle verwendet werden.
Für diese Überladung ist ein Puffer erforderlich, der die zu sendenden Daten enthält. Der SocketFlags Standardwert ist "0", der Pufferversatz auf "0" und die Anzahl der Bytes, die standardmäßig an die Größe des Puffers gesendet werden sollen.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen dieser Methode aufrufen Connect oder Send eine .SocketException Wenn Sie ein verbindungsorientiertes Protokoll verwenden Connect , müssen Sie entweder eine Remotehostverbindung herstellen oder Accept eine eingehende Verbindung akzeptieren.
Wenn Sie ein verbindungsloses Protokoll verwenden und daten an mehrere verschiedene Hosts senden möchten, sollten Sie die SendTo Methode verwenden. Wenn Sie die SendTo Methode nicht verwenden, müssen Sie vor jedem Aufruf aufzurufen ConnectSend. Sie können auch nach SendTo dem Festlegen eines Standard-Remotehosts mit Connect. Sie können auch den Standard-Remotehost vor dem Anruf Send ändern, indem Sie einen anderen Anruf tätigen Connect.
Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mit Socket.SendTimeoutverwendet. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf einen SocketException. Im Nichtblockierungsmodus kann der Vorgang erfolgreich abgeschlossen werden, Send auch wenn er weniger als die Anzahl der Bytes im Puffer sendet. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang erneut zu wiederholen, bis die Anwendung die Bytes im Puffer sendet. Es gibt auch keine Garantie, 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 Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
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.
Dieses Mitglied gibt Protokollierungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Network Tracing in .NET Framework.
Von Bedeutung
Der erfolgreiche Abschluss einer Übermittlung weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden. Wenn kein Pufferspeicher im Transportsystem verfügbar ist, um die zu übertragenden Daten zu halten, wird das Senden blockiert, es sei denn, der Socket wurde im Nichtblockingmodus platziert.
Weitere Informationen
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Gilt für:
Send(ReadOnlySpan<Byte>)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet Daten an eine verbundene Socket.
public:
int Send(ReadOnlySpan<System::Byte> buffer);
public int Send(ReadOnlySpan<byte> buffer);
member this.Send : ReadOnlySpan<byte> -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte)) As Integer
Parameter
- buffer
- ReadOnlySpan<Byte>
Eine Spanne von Bytes, die die zu sendenden Daten enthält.
Gibt zurück
Die Anzahl der bytes, die an die Socket.
Ausnahmen
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Das Socket wurde geschlossen.
Hinweise
Send Sendet synchron Daten an den remotehost, der in der Connect Oder-Methode Accept angegeben ist, und gibt die Anzahl der erfolgreich gesendeten Bytes zurück. Send kann sowohl für verbindungsorientierte als auch für verbindungslose Protokolle verwendet werden.
Für diese Überladung ist ein Puffer erforderlich, der die zu sendenden Daten enthält. Der SocketFlags Standardwert ist "0", der Pufferversatz auf "0" und die Anzahl der Bytes, die standardmäßig an die Größe des Puffers gesendet werden sollen.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen dieser Methode aufrufen Connect oder Send eine .SocketException Wenn Sie ein verbindungsorientiertes Protokoll verwenden Connect , müssen Sie entweder eine Remotehostverbindung herstellen oder Accept eine eingehende Verbindung akzeptieren.
Wenn Sie ein verbindungsloses Protokoll verwenden und daten an mehrere verschiedene Hosts senden möchten, sollten Sie die SendTo Methode verwenden. Wenn Sie die SendTo Methode nicht verwenden, müssen Sie vor jedem Aufruf aufzurufen ConnectSend. Sie können auch nach SendTo dem Festlegen eines Standard-Remotehosts mit Connect. Sie können auch den Standard-Remotehost vor dem Anruf Send ändern, indem Sie einen anderen Anruf tätigen Connect.
Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mit Socket.SendTimeoutverwendet. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf einen SocketException. Im Nichtblockierungsmodus kann der Vorgang erfolgreich abgeschlossen werden, Send auch wenn er weniger als die Anzahl der Bytes im Puffer sendet. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang erneut zu wiederholen, bis die Anwendung die Bytes im Puffer sendet. Es gibt auch keine Garantie, 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 Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
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.
Dieses Mitglied gibt Protokollierungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Network Tracing in .NET Framework.
Von Bedeutung
Der erfolgreiche Abschluss einer Übermittlung weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden. Wenn kein Pufferspeicher im Transportsystem verfügbar ist, um die zu übertragenden Daten zu halten, wird das Senden blockiert, es sei denn, der Socket wurde im Nichtblockingmodus platziert.
Weitere Informationen
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Gilt für:
Send(Byte[], Int32, Int32, SocketFlags, SocketError)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet die angegebene Anzahl von Bytes von Daten an eine verbundene Socket, beginnend mit dem angegebenen Offset und die Verwendung der angegebenen SocketFlags.
public:
int Send(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError) 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.
- errorCode
- SocketError
Ein SocketError Objekt, das den Socketfehler speichert.
Gibt zurück
Die Anzahl der bytes, die an die Socket.
Ausnahmen
buffer ist null.
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.
Beispiele
Im folgenden Codebeispiel wird der Datenpuffer, ein Offset, eine Größe und SocketFlags das Senden von Daten an eine verbundene Daten Socketangegeben.
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
Console.WriteLine("Sent {0} bytes.", byteCount);
// Get reply from the server.
byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
Console.WriteLine("Sent {0} bytes.", byteCount)
' Get reply from the server.
byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
If byteCount > 0 Then
Console.WriteLine(Encoding.UTF8.GetString(bytes))
End If
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest4
Hinweise
Send Sendet synchron Daten an den remotehost, der in der Connect Oder-Methode Accept angegeben ist, und gibt die Anzahl der erfolgreich gesendeten Bytes zurück. Send kann sowohl für verbindungsorientierte als auch für verbindungslose Protokolle verwendet werden.
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 dieser Methode aufrufen Connect oder Send eine .SocketException Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder Connect eine Remotehostverbindung herstellen oder Accept eine eingehende Verbindung akzeptieren.
Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie diese verwenden SendTo. Wenn Sie dies nicht verwendenSendTo, müssen Sie vor jedem Anruf anrufenConnect.Send Es ist in Ordnung, SendTo auch nach der Einrichtung eines Standard-Remotehosts mit Connect. Sie können auch den Standard-Remotehost vor dem Anruf Send ändern, indem Sie einen anderen Anruf tätigen Connect.
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 Send löst ein SocketException.
Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis die angeforderte Anzahl von Bytes gesendet wird, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutvon . Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf einen SocketException. Im Nichtblockierungsmodus kann der Vorgang erfolgreich abgeschlossen werden, Send auch wenn er weniger als die Von Ihnen angeforderte Anzahl von Bytes sendet. 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 ausgehender Daten gesammelt wird. Ein erfolgreicher Abschluss der Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
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
Der erfolgreiche Abschluss einer Übermittlung weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden. Wenn kein Pufferspeicher im Transportsystem verfügbar ist, um die zu übertragenden Daten zu halten, wird das Senden blockiert, es sei denn, der Socket wurde im Nichtblockingmodus platziert.
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)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Gilt für:
Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet den Satz von Puffern in der Liste an eine verbundene Socket, mithilfe der angegebenen SocketFlags.
public:
int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send(System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer
Parameter
- buffers
- IList<ArraySegment<Byte>>
Eine Liste des ArraySegment<T>Typs Byte , die die zu sendenden Daten enthält.
- socketFlags
- SocketFlags
Eine bitweise Kombination der SocketFlags Werte.
- errorCode
- SocketError
Ein SocketError Objekt, das den Socketfehler speichert.
Gibt zurück
Die Anzahl der bytes, die an die Socket.
Ausnahmen
buffers ist null.
buffers ist leer.
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Das Socket wurde geschlossen.
Hinweise
Diese Überladung erfordert mindestens einen Puffer, der die zu sendenden Daten enthält. Der SocketFlags Standardwert ist 0. 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 dieser Methode aufrufen Connect oder Send eine .SocketException Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder Connect eine Remotehostverbindung herstellen oder Accept eine eingehende Verbindung akzeptieren.
Wenn Sie ein verbindungsloses Protokoll verwenden und daten an mehrere verschiedene Hosts senden möchten, sollten Sie die SendTo Methode verwenden. Wenn Sie die SendTo Methode nicht verwenden, müssen Sie vor jedem Aufruf von ConnectSend. Sie können auch nach SendTo dem Festlegen eines Standard-Remotehosts mit Connect. Sie können auch den Standard-Remotehost vor dem Anruf Send ändern, indem Sie einen anderen Anruf tätigen Connect.
Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mit Socket.SendTimeoutverwendet. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf einen SocketException. Im nicht blockierenden Modus kann der Vorgang erfolgreich abgeschlossen werden, Send auch wenn er weniger als die Anzahl der Bytes im Puffer sendet. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang erneut zu wiederholen, bis die Anwendung die Bytes im Puffer 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 Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
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
Der erfolgreiche Abschluss einer Übermittlung weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden. Wenn kein Pufferspeicher im Transportsystem verfügbar ist, um die zu übertragenden Daten zu halten, wird das Senden blockiert, es sei denn, der Socket wurde im Nichtblockingmodus platziert.
Hinweis
Dieses Mitglied gibt Protokollierungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Network Tracing in .NET Framework.
Gilt für:
Send(Byte[], Int32, Int32, SocketFlags)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet die angegebene Anzahl von Bytes von Daten an eine verbundene Socket, beginnend mit dem angegebenen Offset und die Verwendung der angegebenen SocketFlags.
public:
int Send(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Send(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * int * int * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags) 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 bytes, die an die Socket.
Ausnahmen
buffer ist null.
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.
Beispiele
Im folgenden Codebeispiel wird der Datenpuffer, ein Offset, eine Größe und SocketFlags das Senden von Daten an eine verbundene Daten Socketangegeben.
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
Console.WriteLine("Sent {0} bytes.", byteCount);
// Get reply from the server.
byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
Console.WriteLine("Sent {0} bytes.", byteCount)
' Get reply from the server.
byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
If byteCount > 0 Then
Console.WriteLine(Encoding.UTF8.GetString(bytes))
End If
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest4
Hinweise
Send Sendet synchron Daten an den remotehost, der in der Connect Oder-Methode Accept angegeben ist, und gibt die Anzahl der erfolgreich gesendeten Bytes zurück. Send kann sowohl für verbindungsorientierte als auch für verbindungslose Protokolle verwendet werden.
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 dieser Methode aufrufen Connect oder Send eine .SocketException Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder Connect eine Remotehostverbindung herstellen oder Accept eine eingehende Verbindung akzeptieren.
Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie diese verwenden SendTo. Wenn Sie dies nicht verwendenSendTo, müssen Sie vor jedem Anruf anrufenConnect.Send Es ist in Ordnung, SendTo auch nach der Einrichtung eines Standard-Remotehosts mit Connect. Sie können auch den Standard-Remotehost vor dem Anruf Send ändern, indem Sie einen anderen Anruf tätigen Connect.
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 Send löst ein SocketException.
Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis die angeforderte Anzahl von Bytes gesendet wird, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutvon . Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf einen SocketException. Im Nichtblockierungsmodus kann der Vorgang erfolgreich abgeschlossen werden, Send auch wenn er weniger als die Von Ihnen angeforderte Anzahl von Bytes sendet. 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 ausgehender Daten gesammelt wird. Ein erfolgreicher Abschluss der Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
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
Der erfolgreiche Abschluss einer Übermittlung weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden. Wenn kein Pufferspeicher im Transportsystem verfügbar ist, um die zu übertragenden Daten zu halten, wird das Senden blockiert, es sei denn, der Socket wurde im Nichtblockingmodus platziert.
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)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Gilt für:
Send(Byte[], Int32, SocketFlags)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet die angegebene Anzahl von Byte von Daten an eine verbundene Socket, mithilfe der angegebenen SocketFlags.
public:
int Send(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Send(byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * int * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), size As Integer, socketFlags As SocketFlags) 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 bytes, die an die Socket.
Ausnahmen
buffer ist null.
size ist kleiner als 0 oder überschreitet die Größe des Puffers.
socketFlags ist keine gültige Kombination von Werten.
- oder -
Beim Zugriff auf den Socket tritt ein Betriebssystemfehler auf.
Das Socket wurde geschlossen.
Beispiele
Im folgenden Codebeispiel werden die im Puffer gefundenen Daten gesendet und für NoneSocketFlags.
// Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
public static int SendReceiveTest3(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int i = server.Send(msg, msg.Length, SocketFlags.None);
Console.WriteLine("Sent {0} bytes.", i);
// Get reply from the server.
int byteCount = server.Receive(bytes, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, message size, and socket flags.
Public Shared Function SendReceiveTest3(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim i As Integer = server.Send(msg, msg.Length, SocketFlags.None)
Console.WriteLine("Sent {0} bytes.", i)
' Get reply from the server.
Dim byteCount As Integer = server.Receive(bytes, server.Available, SocketFlags.None)
If byteCount > 0 Then
Console.WriteLine(Encoding.UTF8.GetString(bytes))
End If
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest3
Hinweise
Send Sendet synchron Daten an den Remotehost, der in der Connect Oder-Methode Accept eingerichtet wurde, und gibt die Anzahl der erfolgreich gesendeten Bytes zurück. Send kann sowohl für verbindungsorientierte als auch für verbindungslose Protokolle verwendet werden.
Für diese Überladung ist ein Puffer erforderlich, der die zu sendenden Daten enthält, die Anzahl der zu sendenden Bytes und eine bitweise Kombination einer beliebigen SocketFlags. 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 dieser Methode aufrufen Connect oder Send eine .SocketException Wenn Sie ein verbindungsorientiertes Protokoll verwenden Connect , müssen Sie entweder eine Remotehostverbindung herstellen oder Accept eine eingehende Verbindung akzeptieren.
Wenn Sie ein verbindungsloses Protokoll verwenden und daten an mehrere verschiedene Hosts senden möchten, sollten Sie die SendTo Methode verwenden. Wenn Sie die SendTo Methode nicht verwenden, müssen Sie die Connect Methode vor jedem Aufruf der Send Methode aufrufen. Sie können auch nach SendTo dem Festlegen eines Standard-Remotehosts mit Connect. Sie können auch den Standard-Remotehost vor dem Anruf Send ändern, indem Sie einen anderen Anruf tätigen Connect.
Bei einem verbindungsorientierten Protokoll wird blockiert, bis die angeforderte Anzahl von Bytes gesendet wird, es sei denn, Send ein Timeout wurde mit Socket.SendTimeoutverwendet. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf einen SocketException. Im Nichtblockierungsmodus kann der Vorgang erfolgreich abgeschlossen werden, Send auch wenn er weniger als die Von Ihnen angeforderte Anzahl von Bytes sendet. 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 ausgehender Daten gesammelt wird. Ein erfolgreicher Abschluss der Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
Hinweis
Sie müssen 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 Send löst ein SocketException. 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.
Dieses Mitglied gibt Protokollierungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Network Tracing in .NET Framework.
Von Bedeutung
Der erfolgreiche Abschluss einer Übermittlung weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden. Wenn kein Pufferspeicher im Transportsystem verfügbar ist, um die zu übertragenden Daten zu halten, wird das Senden blockiert, es sei denn, der Socket wurde im Nichtblockingmodus platziert.
Weitere Informationen
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Gilt für:
Send(IList<ArraySegment<Byte>>)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet den Satz von Puffern in der Liste an eine verbundene Socket.
public:
int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public int Send(System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte))) As Integer
Parameter
- buffers
- IList<ArraySegment<Byte>>
Eine Liste des ArraySegment<T>Typs Byte , die die zu sendenden Daten enthält.
Gibt zurück
Die Anzahl der bytes, die an die Socket.
Ausnahmen
buffers ist null.
buffers ist leer.
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten. Weitere Informationen finden Sie weiter unten im Abschnitt "Hinweise".
Das Socket wurde geschlossen.
Hinweise
Send kann sowohl für verbindungsorientierte als auch für verbindungslose Protokolle verwendet werden.
Diese Überladung erfordert mindestens einen Puffer, der die zu sendenden Daten enthält.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen dieser Methode aufrufen Connect oder Send eine .SocketException Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder Connect eine Remotehostverbindung herstellen oder Accept eine eingehende Verbindung akzeptieren.
Wenn Sie ein verbindungsloses Protokoll verwenden und daten an mehrere verschiedene Hosts senden möchten, sollten Sie die SendTo Methode verwenden. Wenn Sie die SendTo Methode nicht verwenden, müssen Sie vor jedem Aufruf von ConnectSend. Sie können auch nach SendTo dem Festlegen eines Standard-Remotehosts mit Connect. Sie können auch den Standard-Remotehost vor dem Anruf Send ändern, indem Sie einen anderen Anruf tätigen Connect.
Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mit Socket.SendTimeoutverwendet. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf einen SocketException. Im Nichtblockierungsmodus kann der Vorgang erfolgreich abgeschlossen werden, Send auch wenn er weniger als die Anzahl der Bytes im Puffer sendet. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang erneut zu wiederholen, bis die Anwendung die Bytes im Puffer 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 Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
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
Der erfolgreiche Abschluss einer Übermittlung weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden. Wenn kein Pufferspeicher im Transportsystem verfügbar ist, um die zu übertragenden Daten zu halten, wird das Senden blockiert, es sei denn, der Socket wurde im Nichtblockingmodus platziert.
Hinweis
Dieses Mitglied gibt Protokollierungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Network Tracing in .NET Framework.
Gilt für:
Send(IList<ArraySegment<Byte>>, SocketFlags)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet den Satz von Puffern in der Liste an eine verbundene Socket, mithilfe der angegebenen SocketFlags.
public:
int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public int Send(System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Integer
Parameter
- buffers
- IList<ArraySegment<Byte>>
Eine Liste des ArraySegment<T>Typs Byte , die die zu sendenden Daten enthält.
- socketFlags
- SocketFlags
Eine bitweise Kombination der SocketFlags Werte.
Gibt zurück
Die Anzahl der bytes, die an die Socket.
Ausnahmen
buffers ist null.
buffers ist leer.
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Das Socket wurde geschlossen.
Hinweise
Diese Überladung erfordert mindestens einen Puffer, der die zu sendenden Daten enthält. Der SocketFlags Standardwert ist 0. 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 dieser Methode aufrufen Connect oder Send eine .SocketException Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder Connect eine Remotehostverbindung herstellen oder Accept eine eingehende Verbindung akzeptieren.
Wenn Sie ein verbindungsloses Protokoll verwenden und daten an mehrere verschiedene Hosts senden möchten, sollten Sie die SendTo Methode verwenden. Wenn Sie die SendTo Methode nicht verwenden, müssen Sie vor jedem Aufruf von ConnectSend. Sie können auch nach SendTo dem Festlegen eines Standard-Remotehosts mit Connect. Sie können auch den Standard-Remotehost vor dem Anruf Send ändern, indem Sie einen anderen Anruf tätigen Connect.
Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mit Socket.SendTimeoutverwendet. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf einen SocketException. Im nicht blockierenden Modus kann der Vorgang erfolgreich abgeschlossen werden, Send auch wenn er weniger als die Anzahl der Bytes im Puffer sendet. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang erneut zu wiederholen, bis die Anwendung die Bytes im Puffer 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 Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
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
Der erfolgreiche Abschluss einer Übermittlung weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden. Wenn kein Pufferspeicher im Transportsystem verfügbar ist, um die zu übertragenden Daten zu halten, wird das Senden blockiert, es sei denn, der Socket wurde im Nichtblockingmodus platziert.
Hinweis
Dieses Mitglied gibt Protokollierungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Network Tracing in .NET Framework.
Gilt für:
Send(Byte[], SocketFlags)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet Daten mithilfe Socket der angegebenen SocketFlags.
public:
int Send(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Send(byte[] buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), socketFlags As SocketFlags) As Integer
Parameter
- socketFlags
- SocketFlags
Eine bitweise Kombination der SocketFlags Werte.
Gibt zurück
Die Anzahl der bytes, die an die Socket.
Ausnahmen
buffer ist null.
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Das Socket wurde geschlossen.
Beispiele
Im folgenden Codebeispiel wird das Senden von Daten in einer verbundenen Datei Socketveranschaulicht.
// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int byteCount = server.Send(msg, SocketFlags.None);
Console.WriteLine("Sent {0} bytes.", byteCount);
// Get reply from the server.
byteCount = server.Receive(bytes, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer and socket flags.
Public Shared Function SendReceiveTest2(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim byteCount As Integer = server.Send(msg, SocketFlags.None)
Console.WriteLine("Sent {0} bytes.", byteCount)
' Get reply from the server.
byteCount = server.Receive(bytes, SocketFlags.None)
If byteCount > 0 Then
Console.WriteLine(Encoding.UTF8.GetString(bytes))
End If
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest2
Hinweise
Send Sendet synchron Daten an den Remotehost, der in der Connect Oder-Methode Accept eingerichtet wurde, und gibt die Anzahl der erfolgreich gesendeten Bytes zurück. Die Send Methode kann sowohl für verbindungsorientierte als auch für verbindungslose Protokolle verwendet werden.
Für diese Überladung ist ein Puffer erforderlich, der die daten enthält, die Sie senden möchten, und eine bitweise Kombination aus SocketFlags. Der Pufferversatz ist standardmäßig auf 0 festgelegt, und die Anzahl der Bytes, die standardmäßig an die Größe des Puffers gesendet werden sollen. Wenn Sie das DontRoute Kennzeichen als socketflags Parameterwert angeben, werden die gesendeten Daten nicht weitergeleitet.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen dieser Methode aufrufen Connect oder Send eine .SocketException Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder Connect eine Remotehostverbindung herstellen oder Accept eine eingehende Verbindung akzeptieren.
Wenn Sie ein verbindungsloses Protokoll verwenden und daten an mehrere verschiedene Hosts senden möchten, sollten Sie die SendTo Methode verwenden. Wenn Sie die SendTo Methode nicht verwenden, müssen Sie die Connect Methode vor jedem Aufruf aufrufen Send. Sie können auch nach SendTo dem Festlegen eines Standard-Remotehosts mit Connect. Sie können auch den Standard-Remotehost vor dem Anruf Send ändern, indem Sie einen anderen Anruf tätigen Connect.
Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mit Socket.SendTimeoutverwendet. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf einen SocketException. Im Nichtblockierungsmodus kann der Vorgang erfolgreich abgeschlossen werden, Send auch wenn er weniger als die Anzahl der Bytes im Puffer sendet. 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 ausgehender Daten gesammelt wird. Ein erfolgreicher Abschluss der Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
Hinweis
Sie müssen sicherstellen, dass die Größe des Puffers die maximale Paketgröße des zugrunde liegenden Dienstanbieters nicht überschreitet. Wenn dies der Fall ist, wird das Datagramm nicht gesendet und Send löst ein SocketException. 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
Der erfolgreiche Abschluss einer Übermittlung weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden. Wenn kein Pufferspeicher im Transportsystem verfügbar ist, um die zu übertragenden Daten zu halten, wird das Senden blockiert, es sei denn, der Socket wurde im Nichtblockingmodus platziert.
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)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Gilt für:
Send(ReadOnlySpan<Byte>, SocketFlags)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet Daten mithilfe Socket der angegebenen SocketFlags.
public:
int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Send(ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags) As Integer
Parameter
- buffer
- ReadOnlySpan<Byte>
Eine Spanne von Bytes, die die zu sendenden Daten enthält.
- socketFlags
- SocketFlags
Eine bitweise Kombination der Enumerationswerte, die Sende- und Empfangsverhalten angibt.
Gibt zurück
Die Anzahl der bytes, die an die Socket.
Ausnahmen
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Das Socket wurde geschlossen.
Weitere Informationen
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Gilt für:
Send(Byte[])
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet Daten an eine verbundene Socket.
public:
int Send(cli::array <System::Byte> ^ buffer);
public int Send(byte[] buffer);
member this.Send : byte[] -> int
Public Function Send (buffer As Byte()) As Integer
Parameter
Gibt zurück
Die Anzahl der bytes, die an die Socket.
Ausnahmen
buffer ist null.
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Das Socket wurde geschlossen.
Beispiele
Im folgenden Codebeispiel wird das Senden von Daten in einer verbundenen Datei Socketveranschaulicht.
// Displays sending with a connected socket
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int i = server.Send(msg);
Console.WriteLine("Sent {0} bytes.", i);
// Get reply from the server.
i = server.Receive(bytes);
Console.WriteLine(Encoding.UTF8.GetString(bytes));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer.
Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim i As Integer = server.Send(msg)
Console.WriteLine("Sent {0} bytes.", i)
' Get reply from the server.
i = server.Receive(bytes)
Console.WriteLine(Encoding.UTF8.GetString(bytes))
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest1
Hinweise
Send Sendet synchron Daten an den remotehost, der in der Connect Oder-Methode Accept angegeben ist, und gibt die Anzahl der erfolgreich gesendeten Bytes zurück. Send kann sowohl für verbindungsorientierte als auch für verbindungslose Protokolle verwendet werden.
Für diese Überladung ist ein Puffer erforderlich, der die zu sendenden Daten enthält. Der SocketFlags Standardwert ist "0", der Pufferversatz auf "0" und die Anzahl der Bytes, die standardmäßig an die Größe des Puffers gesendet werden sollen.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen dieser Methode aufrufen Connect oder Send eine .SocketException Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder Connect eine Remotehostverbindung herstellen oder Accept eine eingehende Verbindung akzeptieren.
Wenn Sie ein verbindungsloses Protokoll verwenden und daten an mehrere verschiedene Hosts senden möchten, sollten Sie die SendTo Methode verwenden. Wenn Sie die SendTo Methode nicht verwenden, müssen Sie vor jedem Aufruf von ConnectSend. Sie können auch nach SendTo dem Festlegen eines Standard-Remotehosts mit Connect. Sie können auch den Standard-Remotehost vor dem Anruf Send ändern, indem Sie einen anderen Anruf tätigen Connect.
Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mit Socket.SendTimeoutverwendet. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf einen SocketException. Im Nichtblockierungsmodus kann der Vorgang erfolgreich abgeschlossen werden, Send auch wenn er weniger als die Anzahl der Bytes im Puffer sendet. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang erneut zu wiederholen, bis die Anwendung die Bytes im Puffer 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 Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
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
Der erfolgreiche Abschluss einer Übermittlung weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden. Wenn kein Pufferspeicher im Transportsystem verfügbar ist, um die zu übertragenden Daten zu halten, wird das Senden blockiert, es sei denn, der Socket wurde im Nichtblockingmodus platziert.
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)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)