Socket.Send Methode

Definition

Sendet Daten an einen verbundenen Socket.

Überlädt

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Sendet Daten mithilfe der angegebenen Socket an einen verbundenen SocketFlags.

Send(ReadOnlySpan<Byte>)

Sendet Daten an einen verbundenen Socket.

Send(Byte[], Int32, Int32, SocketFlags, SocketError)

Sendet die angegebene Anzahl von Datenbytes an einen verbundenen Socket, beginnend bei einem angegebenen Offset und unter Verwendung der angegebenen SocketFlags.

Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Sendet den Satz von Puffern in der Liste unter Verwendung der angegebenen Socket an einen verbundenen SocketFlags.

Send(Byte[], Int32, Int32, SocketFlags)

Sendet die angegebene Anzahl von Datenbytes an einen verbundenen Socket, beginnend bei einem angegebenen Offset und unter Verwendung der angegebenen SocketFlags.

Send(Byte[], Int32, SocketFlags)

Sendet die angegebene Anzahl von Datenbytes an einen verbundenen Socket, wobei die angegebenen SocketFlags verwendet werden.

Send(IList<ArraySegment<Byte>>)

Sendet den Satz der Puffer in der Liste an einen verbundenen Socket.

Send(IList<ArraySegment<Byte>>, SocketFlags)

Sendet den Satz von Puffern in der Liste unter Verwendung der angegebenen Socket an einen verbundenen SocketFlags.

Send(Byte[], SocketFlags)

Sendet Daten mithilfe der angegebenen Socket an einen verbundenen SocketFlags.

Send(ReadOnlySpan<Byte>, SocketFlags)

Sendet Daten mithilfe der angegebenen Socket an einen verbundenen SocketFlags.

Send(Byte[])

Sendet Daten an einen verbundenen Socket.

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Sendet Daten mithilfe der angegebenen Socket an einen verbundenen 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>

Eins Spanne von Bytes, die die zu sendenden Daten enthält.

socketFlags
SocketFlags

Eine bitweise Kombination der Enumerationswerte, die das Sende- und Empfangsverhalten angeben.

errorCode
SocketError

Diese Methode gibt einen der Enumerationswerte zurück, der Fehlercodes für den Socket definiert.

Gibt zurück

Die Anzahl der an den Socket gesendeten Bytes.

Ausnahmen

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Hinweise

Send Sendet Daten synchron an den Remotehost, der in der Connect -Methode oder 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.

Diese Überladung erfordert einen Puffer, der die daten enthält, die Sie senden möchten. Der SocketFlags Wert ist standardmäßig 0, der Pufferoffset ist standardmäßig 0, und die Anzahl der Zu sendenden Bytes entspricht der Größe des Puffers.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen dieser Methode aufrufen Connect , oder Send löst eine aus SocketException. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remotehostverbindung herzustellen, oder verwenden Accept Sie, um eine eingehende Verbindung zu akzeptieren.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die SendTo -Methode verwenden. Wenn Sie die SendTo -Methode nicht verwenden, müssen Sie vor jedem Aufruf von SendaufrufenConnect. Sie können auch verwenden SendTo , nachdem Sie einen Standard-Remotehost mit Connecteingerichtet haben. Sie können den Standard-Remotehost auch ändern, bevor Sie aufrufen Send , indem Sie einen weiteren Aufruf von ausführen Connect.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis alle Bytes im Puffer gesendet wurden, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf eine aus SocketException. Im Nichtblockierungsmodus kann erfolgreich abgeschlossen werden, Send auch wenn weniger als die Anzahl von Bytes im Puffer gesendet wird. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die Bytes im Puffer 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 Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für eine Netzwerksendung hatte.

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.

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Wichtig

Der erfolgreiche Abschluss eines Sendevorgangs gibt nicht an, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem kein Pufferspeicher zur Verfügung steht, um die zu übertragenden Daten aufzunehmen, wird send blockiert, es sei denn, der Socket wurde in den Nichtblockierungsmodus versetzt.

Weitere Informationen

Gilt für:

Send(ReadOnlySpan<Byte>)

Sendet Daten an einen verbundenen 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>

Eins Spanne von Bytes, die die zu sendenden Daten enthält.

Gibt zurück

Die Anzahl der an den Socket gesendeten Bytes.

Ausnahmen

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Hinweise

Send Sendet Daten synchron an den Remotehost, der in der Connect -Methode oder 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.

Diese Überladung erfordert einen Puffer, der die daten enthält, die Sie senden möchten. Der SocketFlags Wert ist standardmäßig 0, der Pufferoffset ist standardmäßig 0, und die Anzahl der Zu sendenden Bytes entspricht der Größe des Puffers.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen dieser Methode aufrufen Connect , oder Send löst eine aus SocketException. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remotehostverbindung herzustellen, oder verwenden Accept Sie, um eine eingehende Verbindung zu akzeptieren.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die SendTo -Methode verwenden. Wenn Sie die SendTo -Methode nicht verwenden, müssen Sie vor jedem Aufruf von SendaufrufenConnect. Sie können auch verwenden SendTo , nachdem Sie einen Standard-Remotehost mit Connecteingerichtet haben. Sie können den Standard-Remotehost auch ändern, bevor Sie aufrufen Send , indem Sie einen weiteren Aufruf von ausführen Connect.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis alle Bytes im Puffer gesendet wurden, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf eine aus SocketException. Im Nichtblockierungsmodus kann erfolgreich abgeschlossen werden, Send auch wenn weniger als die Anzahl von Bytes im Puffer gesendet wird. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die Bytes im Puffer 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 Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für eine Netzwerksendung hatte.

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.

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Wichtig

Der erfolgreiche Abschluss eines Sendevorgangs gibt nicht an, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem kein Pufferspeicher zur Verfügung steht, um die zu übertragenden Daten aufzunehmen, wird send blockiert, es sei denn, der Socket wurde in den Nichtblockierungsmodus versetzt.

Weitere Informationen

Gilt für:

Send(Byte[], Int32, Int32, SocketFlags, SocketError)

Sendet die angegebene Anzahl von Datenbytes an einen verbundenen Socket, beginnend bei einem angegebenen Offset und unter 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

buffer
Byte[]

Ein Array vom Typ Byte, das die zu sendenden Daten enthält.

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.

errorCode
SocketError

Ein SocketError-Objekt, in dem der Socketfehler gespeichert wird.

Gibt zurück

Die Anzahl der an den Socket gesendeten Bytes.

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 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.

Beispiele

Im folgenden Codebeispiel werden der Datenpuffer, ein Offset, eine Größe und SocketFlags zum Senden von Daten an eine verbundene Socketangegeben.

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      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 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 Daten synchron an den Remotehost, der in der Connect -Methode oder 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 löst eine aus SocketException. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remotehostverbindung herzustellen, oder verwenden Accept Sie, um eine eingehende Verbindung zu akzeptieren.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie verwenden SendTo. Wenn Sie nicht verwendenSendTo, müssen Sie vor jedem Aufruf von SendaufrufenConnect. Die Verwendung SendTo ist auch dann in Ordnung, wenn Sie einen Standard-Remotehost mit Connecteingerichtet haben. Sie können den Standard-Remotehost auch vor dem Aufrufen Send ändern, indem Sie einen weiteren Aufruf von ausführen 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 eine aus 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 festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf eine aus SocketException. Im Nichtblockierungsmodus kann auch dann erfolgreich abgeschlossen werden, Send wenn weniger als die von Ihnen angeforderte Anzahl von Bytes gesendet wird. 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 ausgehender Daten gesammelt wird. Ein erfolgreicher Abschluss der Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für eine Netzwerksendung hatte.

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

Der erfolgreiche Abschluss eines Sendevorgangs gibt nicht an, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem kein Pufferspeicher zur Verfügung steht, um die zu übertragenden Daten aufzunehmen, wird send blockiert, es sei denn, der Socket wurde in den Nichtblockierungsmodus versetzt.

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

Gilt für:

Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Sendet den Satz von Puffern in der Liste unter Verwendung der angegebenen Socket an einen verbundenen 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 von ArraySegment<T> vom Typ Byte mit den zu sendenden Daten.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

errorCode
SocketError

Ein SocketError-Objekt, in dem der Socketfehler gespeichert wird.

Gibt zurück

Die Anzahl der an den Socket gesendeten Bytes.

Ausnahmen

buffers ist null.

buffers ist leer.

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Hinweise

Diese Überladung erfordert mindestens einen Puffer, der die daten enthält, die Sie senden möchten. Der SocketFlags Wert ist standardmäßig 0. 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 dieser Methode aufrufen Connect , oder Send löst eine aus SocketException. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remotehostverbindung herzustellen, oder verwenden Accept Sie, um eine eingehende Verbindung zu akzeptieren.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die SendTo -Methode verwenden. Wenn Sie die SendTo -Methode nicht verwenden, müssen Sie vor jedem Aufruf von SendaufrufenConnect. Sie können auch verwenden SendTo , nachdem Sie einen Standard-Remotehost mit Connecteingerichtet haben. Sie können den Standard-Remotehost auch vor dem Aufrufen Send ändern, indem Sie einen weiteren Aufruf von ausführen Connect.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis alle Bytes im Puffer gesendet wurden, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf eine aus SocketException. Im nicht blockierenden Modus kann erfolgreich abgeschlossen werden, Send auch wenn weniger als die Anzahl von Bytes im Puffer gesendet wird. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die Bytes im Puffer 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 Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für eine Netzwerksendung hatte.

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

Der erfolgreiche Abschluss eines Sendevorgangs gibt nicht an, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem kein Pufferspeicher zur Verfügung steht, um die zu übertragenden Daten aufzunehmen, wird send blockiert, es sei denn, der Socket wurde in den Nichtblockierungsmodus versetzt.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Gilt für:

Send(Byte[], Int32, Int32, SocketFlags)

Sendet die angegebene Anzahl von Datenbytes an einen verbundenen Socket, beginnend bei einem angegebenen Offset und unter 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

buffer
Byte[]

Ein Array vom Typ Byte, das die zu sendenden Daten enthält.

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 an den Socket gesendeten Bytes.

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 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.

Beispiele

Im folgenden Codebeispiel werden der Datenpuffer, ein Offset, eine Größe und SocketFlags zum Senden von Daten an eine verbundene Socketangegeben.

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      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 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 Daten synchron an den Remotehost, der in der Connect -Methode oder 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 löst eine aus SocketException. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remotehostverbindung herzustellen, oder verwenden Accept Sie, um eine eingehende Verbindung zu akzeptieren.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie verwenden SendTo. Wenn Sie nicht verwendenSendTo, müssen Sie vor jedem Aufruf von SendaufrufenConnect. Die Verwendung SendTo ist auch dann in Ordnung, wenn Sie einen Standard-Remotehost mit Connecteingerichtet haben. Sie können den Standard-Remotehost auch vor dem Aufrufen Send ändern, indem Sie einen weiteren Aufruf von ausführen 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 eine aus 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 festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf eine aus SocketException. Im Nichtblockierungsmodus kann auch dann erfolgreich abgeschlossen werden, Send wenn weniger als die von Ihnen angeforderte Anzahl von Bytes gesendet wird. 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 ausgehender Daten gesammelt wird. Ein erfolgreicher Abschluss der Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für eine Netzwerksendung hatte.

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

Der erfolgreiche Abschluss eines Sendevorgangs gibt nicht an, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem kein Pufferspeicher zur Verfügung steht, um die zu übertragenden Daten aufzunehmen, wird send blockiert, es sei denn, der Socket wurde in den Nichtblockierungsmodus versetzt.

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

Gilt für:

Send(Byte[], Int32, SocketFlags)

Sendet die angegebene Anzahl von Datenbytes an einen verbundenen Socket, wobei die angegebenen SocketFlags verwendet werden.

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

buffer
Byte[]

Ein Array vom Typ Byte, das die zu sendenden Daten enthält.

size
Int32

Die Anzahl von Bytes, die gesendet werden sollen.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

Gibt zurück

Die Anzahl der an den Socket gesendeten Bytes.

Ausnahmen

buffer ist null.

size ist größer als 0 oder übersteigt die Puffergröße.

socketFlags ist keine gültige Kombination von Werten.

- oder -

Beim Zugriff auf den Socket ist ein Fehler auf Betriebssystemebene aufgetreten.

Der Socket wurde geschlossen.

Beispiele

Im folgenden Codebeispiel werden die im Puffer gefundenen Daten gesendet und für SocketFlagsangegebenNone.

// Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
int SendReceiveTest3( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int i = server->Send( msg, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", i.ToString() );
      
      // Get reply from the server.
      int byteCount = server->Receive( bytes, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// 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 Daten synchron an den Remotehost, der in der Connect -Methode oder 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.

Diese Überladung erfordert einen Puffer, der die zu sendenden Daten, die Anzahl der zu sendenden Bytes und eine bitweise Kombination aller SocketFlagsenthält. 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 dieser Methode aufrufen Connect , oder Send löst eine aus SocketException. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remotehostverbindung herzustellen, oder verwenden Accept Sie, um eine eingehende Verbindung zu akzeptieren.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, 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 verwenden SendTo , nachdem Sie einen Standard-Remotehost mit Connecteingerichtet haben. Sie können den Standard-Remotehost auch ändern, bevor Sie aufrufen Send , indem Sie einen weiteren Aufruf von ausführen Connect.

Bei einem verbindungsorientierten Protokoll wird blockiert, Send bis die angeforderte Anzahl von Bytes gesendet wird, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf eine aus SocketException. Im Nichtblockierungsmodus kann auch dann erfolgreich abgeschlossen werden, Send wenn weniger als die von Ihnen angeforderte Anzahl von Bytes gesendet wird. 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 ausgehender Daten gesammelt wird. Ein erfolgreicher Abschluss der Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für eine Netzwerksendung 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 eine aus SocketException. 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.

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Wichtig

Der erfolgreiche Abschluss eines Sendevorgangs gibt nicht an, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem kein Pufferspeicher zur Verfügung steht, um die zu übertragenden Daten aufzunehmen, wird send blockiert, es sei denn, der Socket wurde in den Nichtblockierungsmodus versetzt.

Weitere Informationen

Gilt für:

Send(IList<ArraySegment<Byte>>)

Sendet den Satz der Puffer in der Liste an einen verbundenen 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 von ArraySegment<T> vom Typ Byte mit den zu sendenden Daten.

Gibt zurück

Die Anzahl der an den Socket gesendeten Bytes.

Ausnahmen

buffers ist null.

buffers ist leer.

Fehler beim Versuch, auf den Socket zuzugreifen. Weitere Informationen finden Sie unten im Abschnitt Hinweise.

Der 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 daten enthält, die Sie senden möchten.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen dieser Methode aufrufen Connect , oder Send löst eine aus SocketException. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remotehostverbindung herzustellen, oder verwenden Accept Sie, um eine eingehende Verbindung zu akzeptieren.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die SendTo -Methode verwenden. Wenn Sie die SendTo -Methode nicht verwenden, müssen Sie vor jedem Aufruf von SendaufrufenConnect. Sie können auch verwenden SendTo , nachdem Sie einen Standard-Remotehost mit Connecteingerichtet haben. Sie können den Standard-Remotehost auch vor dem Aufrufen Send ändern, indem Sie einen weiteren Aufruf von ausführen Connect.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis alle Bytes im Puffer gesendet wurden, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf eine aus SocketException. Im Nichtblockierungsmodus kann erfolgreich abgeschlossen werden, Send auch wenn weniger als die Anzahl von Bytes im Puffer gesendet wird. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die Bytes im Puffer 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 Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für eine Netzwerksendung hatte.

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

Der erfolgreiche Abschluss eines Sendevorgangs gibt nicht an, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem kein Pufferspeicher zur Verfügung steht, um die zu übertragenden Daten aufzunehmen, wird send blockiert, es sei denn, der Socket wurde in den Nichtblockierungsmodus versetzt.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Gilt für:

Send(IList<ArraySegment<Byte>>, SocketFlags)

Sendet den Satz von Puffern in der Liste unter Verwendung der angegebenen Socket an einen verbundenen 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 von ArraySegment<T> vom Typ Byte mit den zu sendenden Daten.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

Gibt zurück

Die Anzahl der an den Socket gesendeten Bytes.

Ausnahmen

buffers ist null.

buffers ist leer.

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Hinweise

Diese Überladung erfordert mindestens einen Puffer, der die daten enthält, die Sie senden möchten. Der SocketFlags Wert ist standardmäßig 0. 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 dieser Methode aufrufen Connect , oder Send löst eine aus SocketException. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remotehostverbindung herzustellen, oder verwenden Accept Sie, um eine eingehende Verbindung zu akzeptieren.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die SendTo -Methode verwenden. Wenn Sie die SendTo -Methode nicht verwenden, müssen Sie vor jedem Aufruf von SendaufrufenConnect. Sie können auch verwenden SendTo , nachdem Sie einen Standard-Remotehost mit Connecteingerichtet haben. Sie können den Standard-Remotehost auch vor dem Aufrufen Send ändern, indem Sie einen weiteren Aufruf von ausführen Connect.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf einen aus SocketException. Im nicht blockierenden Modus kann der Vorgang auch dann erfolgreich abgeschlossen werden, Send wenn weniger als die Anzahl von Bytes im Puffer gesendet wird. 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 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 Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für ein Netzwerk sendet.

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

Der erfolgreiche Abschluss eines Sendevorgangs bedeutet nicht, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem kein Pufferspeicher zur Verfügung steht, um die zu übertragenden Daten aufzunehmen, wird das Senden blockiert, es sei denn, der Socket wurde in den Nichtblockierungsmodus versetzt.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Gilt für:

Send(Byte[], SocketFlags)

Sendet Daten mithilfe der angegebenen Socket an einen verbundenen 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

buffer
Byte[]

Ein Array vom Typ Byte, das die zu sendenden Daten enthält.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

Gibt zurück

Die Anzahl der an den Socket gesendeten Bytes.

Ausnahmen

buffer ist null.

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Beispiele

Das folgende Codebeispiel veranschaulicht das Senden von Daten auf einem verbundenen Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
int SendReceiveTest2( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // 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.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// 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 Daten synchron an den Remotehost, der in der Connect -Methode oder Accept eingerichtet ist, 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.

Diese Überladung erfordert einen Puffer, der die daten enthält, die Sie senden möchten, und eine bitweise Kombination von SocketFlags. Der Pufferoffset ist standardmäßig auf 0 festgelegt, und die Anzahl der Bytes, die gesendet werden sollen, entspricht der Größe des Puffers. Wenn Sie das DontRoute Flag 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 lösen sie aus SocketException. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder Connect verwenden, um eine Remotehostverbindung herzustellen, oder verwenden Accept , um eine eingehende Verbindung zu akzeptieren.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die SendTo -Methode verwenden. Wenn Sie die SendTo -Methode nicht verwenden, müssen Sie die Connect -Methode vor jedem Aufruf von Sendaufrufen. Sie können auch verwenden SendTo , nachdem Sie einen Standard-Remotehost mit Connecteingerichtet haben. Sie können den Standard-Remotehost auch vor dem Aufrufen Send ändern, indem Sie einen weiteren Aufruf von ausführen Connect.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf einen aus SocketException. Im Nichtblockierungsmodus kann der Vorgang auch dann erfolgreich abgeschlossen werden, Send wenn weniger als die Anzahl von Bytes im Puffer gesendet wird. 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 ausgehender Daten gesammelt wird. Ein erfolgreicher Abschluss der Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für ein Netzwerk sendet.

Hinweis

Sie müssen sicherstellen, dass die Größe Ihres 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 einen aus SocketException. 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

Der erfolgreiche Abschluss eines Sendevorgangs bedeutet nicht, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem kein Pufferspeicher zur Verfügung steht, um die zu übertragenden Daten aufzunehmen, wird das Senden blockiert, es sei denn, der Socket wurde in den Nichtblockierungsmodus versetzt.

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

Gilt für:

Send(ReadOnlySpan<Byte>, SocketFlags)

Sendet Daten mithilfe der angegebenen Socket an einen verbundenen 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>

Eins Spanne von Bytes, die die zu sendenden Daten enthält.

socketFlags
SocketFlags

Eine bitweise Kombination der Enumerationswerte, die das Sende- und Empfangsverhalten angeben.

Gibt zurück

Die Anzahl der an den Socket gesendeten Bytes.

Ausnahmen

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Weitere Informationen

Gilt für:

Send(Byte[])

Sendet Daten an einen verbundenen 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

buffer
Byte[]

Ein Array vom Typ Byte, das die zu sendenden Daten enthält.

Gibt zurück

Die Anzahl der an den Socket gesendeten Bytes.

Ausnahmen

buffer ist null.

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Beispiele

Das folgende Codebeispiel veranschaulicht das Senden von Daten auf einem verbundenen Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer.
int SendReceiveTest1( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return ( e->ErrorCode );
   }
   return 0;
}
// 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 Daten synchron an den in der Connect -Methode oder Accept angegebenen Remotehost und gibt die Anzahl der erfolgreich gesendeten Bytes zurück. Send kann sowohl für verbindungsorientierte als auch für verbindungslose Protokolle verwendet werden.

Diese Überladung erfordert einen Puffer, der die daten enthält, die Sie senden möchten. Der SocketFlags Wert ist standardmäßig auf 0, der Pufferoffset standardmäßig auf 0 und die Anzahl der Bytes, die Die Standardwerte auf die Größe des Puffers senden sollen.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen dieser Methode aufrufen Connect , oder Send lösen sie aus SocketException. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder Connect verwenden, um eine Remotehostverbindung herzustellen, oder verwenden Accept , um eine eingehende Verbindung zu akzeptieren.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die SendTo -Methode verwenden. Wenn Sie die SendTo -Methode nicht verwenden, müssen Sie vor jedem Aufruf von SendaufrufenConnect. Sie können auch verwenden SendTo , nachdem Sie einen Standard-Remotehost mit Connecteingerichtet haben. Sie können den Standard-Remotehost auch vor dem Aufrufen Send ändern, indem Sie einen weiteren Aufruf von ausführen Connect.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, Send bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Send Aufruf einen aus SocketException. Im Nichtblockierungsmodus kann der Vorgang auch dann erfolgreich abgeschlossen werden, Send wenn weniger als die Anzahl von Bytes im Puffer gesendet wird. 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 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 Send Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für ein Netzwerk sendet.

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

Der erfolgreiche Abschluss eines Sendevorgangs bedeutet nicht, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem kein Pufferspeicher zur Verfügung steht, um die zu übertragenden Daten aufzunehmen, wird das Senden blockiert, es sei denn, der Socket wurde in den Nichtblockierungsmodus versetzt.

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

Gilt für: