Socket.Send メソッド

定義

接続された Socket にデータを送信します。

オーバーロード

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

指定した SocketFlags を使用して、接続された Socket にデータを送信します。

Send(ReadOnlySpan<Byte>)

接続された Socket にデータを送信します。

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

指定したオフセットから開始し、指定した SocketFlags を使用して、指定したバイト数のデータを接続された Socket に送信します。

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

指定した SocketFlags を使用して、リスト内のバッファーのセットを接続された Socket に送信します。

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

指定したオフセットから開始し、指定した SocketFlags を使用して、指定したバイト数のデータを接続された Socket に送信します。

Send(Byte[], Int32, SocketFlags)

指定した SocketFlags を使用し、指定したバイト数のデータを、接続された Socket に送信します。

Send(IList<ArraySegment<Byte>>)

リスト内のバッファーのセットを接続された Socket に送信します。

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

指定した SocketFlags を使用して、リスト内のバッファーのセットを接続された Socket に送信します。

Send(Byte[], SocketFlags)

指定した SocketFlags を使用して、接続された Socket にデータを送信します。

Send(ReadOnlySpan<Byte>, SocketFlags)

指定した SocketFlags を使用して、接続された Socket にデータを送信します。

Send(Byte[])

接続された Socket にデータを送信します。

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した SocketFlags を使用して、接続された Socket にデータを送信します。

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

パラメーター

buffer
ReadOnlySpan<Byte>

送信されるデータを含むバイトのスパン。

socketFlags
SocketFlags

送受信の動作を指定する列挙値のビットごとの組み合わせ。

errorCode
SocketError

このメソッドから制御が戻るときに、ソケットのエラー コードを定義する列挙値の 1 つを格納します。

戻り値

Socket に送信されたバイト数。

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

注釈

Sendは、 メソッドまたは Accept メソッドで指定されたリモート ホストにConnectデータを同期的に送信し、正常に送信されたバイト数を返します。 Send は、接続指向プロトコルとコネクションレス プロトコルの両方に使用できます。

このオーバーロードには、送信するデータを含むバッファーが必要です。 値の既定値は 0、バッファー オフセットの既定値は SocketFlags 0、送信するバイト数は既定でバッファーのサイズになります。

コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び出す Connect 必要があります。または Send 、 を SocketExceptionスローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。

コネクションレス プロトコルを使用していて、複数の異なるホストにデータを送信する予定がある場合は、 メソッドを使用する SendTo 必要があります。 メソッドを SendTo 使用しない場合は、 を呼び出す前に を呼び出 ConnectSend必要があります。 を使用して既定のリモート ホストConnectを確立した後でも、 を使用SendToできます。 を別の呼び出しで呼び出す Send 前に、既定のリモート ホストを Connect変更することもできます。

接続指向プロトコルを使用している場合は、 Send を使用 Socket.SendTimeoutしてタイムアウトが設定されていない限り、バッファー内のすべてのバイトが送信されるまでブロックされます。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send バッファー内のバイト数より小さい値を送信した場合でも、正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションがバッファー内のバイトを送信するまで操作を再試行するのは、アプリケーションの責任です。 また、送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは大量の送信データが収集されるまで送信を遅らせる可能性があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

注意

を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

重要

送信が正常に完了しても、データが正常に配信されたことを示すものではありません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに入っていない限り、send はブロックします。

こちらもご覧ください

適用対象

Send(ReadOnlySpan<Byte>)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

接続された 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

パラメーター

buffer
ReadOnlySpan<Byte>

送信されるデータを含むバイトのスパン。

戻り値

Socket に送信されたバイト数。

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

注釈

Sendは、 メソッドまたは Accept メソッドで指定されたリモート ホストにConnectデータを同期的に送信し、正常に送信されたバイト数を返します。 Send は、接続指向プロトコルとコネクションレス プロトコルの両方に使用できます。

このオーバーロードには、送信するデータを含むバッファーが必要です。 値の既定値は 0、バッファー オフセットの既定値は SocketFlags 0、送信するバイト数は既定でバッファーのサイズになります。

コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び出す Connect 必要があります。または Send 、 を SocketExceptionスローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。

コネクションレス プロトコルを使用していて、複数の異なるホストにデータを送信する予定がある場合は、 メソッドを使用する SendTo 必要があります。 メソッドを SendTo 使用しない場合は、 を呼び出す前に を呼び出 ConnectSend必要があります。 を使用して既定のリモート ホストConnectを確立した後でも、 を使用SendToできます。 を別の呼び出しで呼び出す Send 前に、既定のリモート ホストを Connect変更することもできます。

接続指向プロトコルを使用している場合は、 Send を使用 Socket.SendTimeoutしてタイムアウトが設定されていない限り、バッファー内のすべてのバイトが送信されるまでブロックされます。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send バッファー内のバイト数より小さい値を送信した場合でも、正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションがバッファー内のバイトを送信するまで操作を再試行するのは、アプリケーションの責任です。 また、送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは大量の送信データが収集されるまで送信を遅らせる可能性があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

注意

を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については 、Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

重要

送信が正常に完了しても、データが正常に配信されたことを示すものではありません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに入っていない限り、send はブロックします。

こちらもご覧ください

適用対象

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

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定したオフセットから開始し、指定した SocketFlags を使用して、指定したバイト数のデータを接続された Socket に送信します。

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

パラメーター

buffer
Byte[]

送信されるデータを含む Byte 型の配列。

offset
Int32

データの送信を開始する、データ バッファー内の位置。

size
Int32

送信するバイト数。

socketFlags
SocketFlags

SocketFlags 値のビットごとの組み合わせ。

errorCode
SocketError

ソケット エラーを格納する SocketError オブジェクト。

戻り値

Socket に送信されたバイト数。

例外

buffernullです。

offset が 0 未満です。

または

offsetbuffer の長さを超えています。

または

size が 0 未満です。

- または -

size が、buffer の長さから offset パラメーターの値を引いた値を超えています。

socketFlags は、値の有効な組み合わせではありません。

- または -

Socket にアクセス中にオペレーティング システム エラーが発生しました。

Socket が閉じられました。

次のコード例では、接続Socketされている にデータを送信するためのデータ バッファー、オフセット、サイズ、および SocketFlags を指定します。

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

注釈

Sendは、 メソッドまたは Accept メソッドで指定されたリモート ホストにConnectデータを同期的に送信し、正常に送信されたバイト数を返します。 Send は、接続指向プロトコルとコネクションレス プロトコルの両方に使用できます。

このオーバーロードでは、 フラグを DontRoute パラメーターとして socketflags 指定した場合、送信するデータはルーティングされません。

コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び出す Connect 必要があります。または Send 、 を SocketExceptionスローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。

コネクションレス プロトコルを使用していて、複数の異なるホストにデータを送信する予定の場合は、 を使用 SendToする必要があります。 を使用 SendToしない場合は、 を呼び出す前に を呼び Connect 出す Send必要があります。 を使用して既定のリモート ホストConnectを確立した後でも、 を使用SendToしても問題ありません。 を別の呼び出しで呼び出 Send す前に、既定のリモート ホストを Connect変更することもできます。

また、サイズが基になるサービス プロバイダーの最大パケット サイズを超えないようにする必要があります。 送信された場合、データグラムは送信されず、 SendSocketExceptionスローされます。

接続指向プロトコルを使用している場合は、 Send を使用 Socket.SendTimeoutしてタイムアウトが設定されていない限り、要求されたバイト数が送信されるまでブロックされます。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send 要求したバイト数より小さい値を送信した場合でも、正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションが要求されたバイト数を送信するまで操作を再試行するのは、アプリケーションの責任です。 また、送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは大量の送信データが収集されるまで送信を遅らせる可能性があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

注意

を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については 、Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

注意

送信が正常に完了しても、データが正常に配信されたことを示すものではありません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに入っていない限り、send はブロックします。

Note

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

こちらもご覧ください

適用対象

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

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した SocketFlags を使用して、リスト内のバッファーのセットを接続された Socket に送信します。

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

パラメーター

buffers
IList<ArraySegment<Byte>>

送信するデータを格納する Byte 型の ArraySegment<T> のリスト。

socketFlags
SocketFlags

SocketFlags 値のビットごとの組み合わせ。

errorCode
SocketError

ソケット エラーを格納する SocketError オブジェクト。

戻り値

Socket に送信されたバイト数。

例外

buffersnullです。

buffers が空です。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

注釈

このオーバーロードには、送信するデータを含むバッファーが少なくとも 1 つ必要です。 既定値は SocketFlags 0 です。 パラメーターとして フラグを DontRoute 指定した socketFlags 場合、送信するデータはルーティングされません。

コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び出す Connect 必要があります。または Send 、 を SocketExceptionスローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。

コネクションレス プロトコルを使用していて、複数の異なるホストにデータを送信する予定がある場合は、 メソッドを使用する SendTo 必要があります。 メソッドを SendTo 使用しない場合は、 を呼び出す前に を呼び出 ConnectSend必要があります。 を使用して既定のリモート ホストConnectを確立した後でも、 を使用SendToできます。 を別の呼び出しで呼び出 Send す前に、既定のリモート ホストを Connect変更することもできます。

接続指向プロトコルを使用している場合は、 Send を使用 Socket.SendTimeoutしてタイムアウトが設定されていない限り、バッファー内のすべてのバイトが送信されるまでブロックされます。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send バッファー内のバイト数より小さい値を送信した場合でも、正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションがバッファー内のバイトを送信するまで操作を再試行するのは、アプリケーションの責任です。 また、送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは大量の送信データが収集されるまで送信を遅らせる可能性があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

注意

を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については 、Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

注意

送信が正常に完了しても、データが正常に配信されたことを示すものではありません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに入っていない限り、send はブロックします。

Note

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

適用対象

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

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定したオフセットから開始し、指定した SocketFlags を使用して、指定したバイト数のデータを接続された Socket に送信します。

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

パラメーター

buffer
Byte[]

送信されるデータを含む Byte 型の配列。

offset
Int32

データの送信を開始する、データ バッファー内の位置。

size
Int32

送信するバイト数。

socketFlags
SocketFlags

SocketFlags 値のビットごとの組み合わせ。

戻り値

Socket に送信されたバイト数。

例外

buffernullです。

offset が 0 未満です。

または

offsetbuffer の長さを超えています。

または

size が 0 未満です。

- または -

size が、buffer の長さから offset パラメーターの値を引いた値を超えています。

socketFlags は、値の有効な組み合わせではありません。

- または -

Socket にアクセス中にオペレーティング システム エラーが発生しました。

Socket が閉じられました。

次のコード例では、接続Socketされている にデータを送信するためのデータ バッファー、オフセット、サイズ、および SocketFlags を指定します。

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

注釈

Sendは、 メソッドまたは Accept メソッドで指定されたリモート ホストにConnectデータを同期的に送信し、正常に送信されたバイト数を返します。 Send は、接続指向プロトコルとコネクションレス プロトコルの両方に使用できます。

このオーバーロードでは、 フラグを DontRoute パラメーターとして socketflags 指定した場合、送信するデータはルーティングされません。

コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び出す Connect 必要があります。または Send 、 を SocketExceptionスローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。

コネクションレス プロトコルを使用していて、複数の異なるホストにデータを送信する予定の場合は、 を使用 SendToする必要があります。 を使用 SendToしない場合は、 を呼び出す前に を呼び Connect 出す Send必要があります。 を使用して既定のリモート ホストConnectを確立した後でも、 を使用SendToしても問題ありません。 を別の呼び出しで呼び出 Send す前に、既定のリモート ホストを Connect変更することもできます。

また、サイズが基になるサービス プロバイダーの最大パケット サイズを超えないようにする必要があります。 送信された場合、データグラムは送信されず、 SendSocketExceptionスローされます。

接続指向プロトコルを使用している場合は、 Send を使用 Socket.SendTimeoutしてタイムアウトが設定されていない限り、要求されたバイト数が送信されるまでブロックされます。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send 要求したバイト数より小さい値を送信した場合でも、正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションが要求されたバイト数を送信するまで操作を再試行するのは、アプリケーションの責任です。 送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは、大量の送信データが収集されるまで送信を遅らせる場合があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

注意

を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

注意

送信が正常に完了しても、データが正常に配信されたことは示されません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに設定されていない限り、send はブロックします。

Note

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

こちらもご覧ください

適用対象

Send(Byte[], Int32, SocketFlags)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した SocketFlags を使用し、指定したバイト数のデータを、接続された Socket に送信します。

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

パラメーター

buffer
Byte[]

送信されるデータを含む Byte 型の配列。

size
Int32

送信するバイト数。

socketFlags
SocketFlags

SocketFlags 値のビットごとの組み合わせ。

戻り値

Socket に送信されたバイト数。

例外

buffernullです。

size が 0 未満か、バッファーのサイズを超える値です。

socketFlags は、値の有効な組み合わせではありません。

- または -

ソケットへのアクセス中にオペレーティング システム エラーが発生しました。

Socket が閉じられました。

次のコード例では、buffer で見つかったデータを送信し、 に をSocketFlags指定しますNone

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

注釈

Sendは、 メソッドまたは Accept メソッドでConnect確立されたリモート ホストにデータを同期的に送信し、正常に送信されたバイト数を返します。 Send は、接続指向プロトコルとコネクションレス プロトコルの両方に使用できます。

このオーバーロードには、送信するデータ、送信するバイト数、および 任意 SocketFlagsの のビットごとの組み合わせを含むバッファーが必要です。 パラメーターとして フラグをDontRoutesocketflags指定した場合、送信するデータはルーティングされません。

コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び出す Connect 必要があります。または Send 、 を SocketExceptionスローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。

コネクションレス プロトコルを使用していて、複数の異なるホストにデータを送信する予定がある場合は、 メソッドを使用する SendTo 必要があります。 メソッドを SendTo 使用しない場合は、 メソッドを呼び出す前に メソッドを Connect 呼び出す Send 必要があります。 を使用して既定のリモート ホストConnectを確立した後でも、 を使用SendToできます。 を別の呼び出しで呼び出す Send 前に、既定のリモート ホストを Connect変更することもできます。

接続指向プロトコルでは、 Send を使用して Socket.SendTimeoutタイムアウトが設定されていない限り、 は要求されたバイト数が送信されるまでブロックします。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send 要求したバイト数未満の送信でも正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションが要求されたバイト数を送信するまで操作を再試行するのは、アプリケーションの責任です。 送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは、大量の送信データが収集されるまで送信を遅らせる場合があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

注意

そのサイズが、基になるサービス プロバイダーの最大パケット サイズを超えないようにする必要があります。 その場合、データグラムは送信されないため、 SendSocketExceptionスローされます。 を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

重要

送信が正常に完了しても、データが正常に配信されたことは示されません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに設定されていない限り、send はブロックします。

こちらもご覧ください

適用対象

Send(IList<ArraySegment<Byte>>)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

リスト内のバッファーのセットを接続された 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

パラメーター

buffers
IList<ArraySegment<Byte>>

送信するデータを格納する Byte 型の ArraySegment<T> のリスト。

戻り値

Socket に送信されたバイト数。

例外

buffersnullです。

buffers が空です。

ソケットへのアクセスを試行しているときにエラーが発生しました。 以下の解説を参照してください。

Socket が閉じられました。

注釈

Send は、接続指向プロトコルとコネクションレス プロトコルの両方に使用できます。

このオーバーロードには、送信するデータを含むバッファーが少なくとも 1 つ必要です。

コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び出す Connect 必要があります。または Send 、 を SocketExceptionスローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。

コネクションレス プロトコルを使用していて、複数の異なるホストにデータを送信する予定がある場合は、 メソッドを使用する SendTo 必要があります。 メソッドを SendTo 使用しない場合は、 を呼び出す前に を呼び出 ConnectSend必要があります。 を使用して既定のリモート ホストConnectを確立した後でも、 を使用SendToできます。 を別の呼び出しで呼び出 Send す前に、既定のリモート ホストを Connect変更することもできます。

接続指向プロトコルを使用している場合、 は、 Send を使用 Socket.SendTimeoutしてタイムアウトが設定されていない限り、バッファー内のすべてのバイトが送信されるまでブロックします。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send バッファー内のバイト数より少ないバイト数を送信した場合でも、正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションがバッファー内のバイトを送信するまで操作を再試行するのは、アプリケーションの責任です。 送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは、大量の送信データが収集されるまで送信を遅らせる場合があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

注意

を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

注意

送信が正常に完了しても、データが正常に配信されたことは示されません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに設定されていない限り、send はブロックします。

Note

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

適用対象

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

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した SocketFlags を使用して、リスト内のバッファーのセットを接続された Socket に送信します。

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

パラメーター

buffers
IList<ArraySegment<Byte>>

送信するデータを格納する Byte 型の ArraySegment<T> のリスト。

socketFlags
SocketFlags

SocketFlags 値のビットごとの組み合わせ。

戻り値

Socket に送信されたバイト数。

例外

buffersnullです。

buffers が空です。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

注釈

このオーバーロードには、送信するデータを含むバッファーが少なくとも 1 つ必要です。 この値の既定値は SocketFlags 0 です。 パラメーターとして フラグをDontRoutesocketFlags指定した場合、送信するデータはルーティングされません。

コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び出す Connect 必要があります。または Send 、 を SocketExceptionスローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。

コネクションレス プロトコルを使用していて、複数の異なるホストにデータを送信する予定がある場合は、 メソッドを使用する SendTo 必要があります。 メソッドを SendTo 使用しない場合は、 を呼び出す前に を呼び出 ConnectSend必要があります。 を使用して既定のリモート ホストConnectを確立した後でも、 を使用SendToできます。 を別の呼び出しで呼び出 Send す前に、既定のリモート ホストを Connect変更することもできます。

接続指向プロトコルを使用している場合は、 Send を使用 Socket.SendTimeoutしてタイムアウトが設定されていない限り、バッファー内のすべてのバイトが送信されるまでブロックされます。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send バッファー内のバイト数より小さい値を送信した場合でも、正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションがバッファー内のバイトを送信するまで操作を再試行するのは、アプリケーションの責任です。 また、送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは大量の送信データが収集されるまで送信を遅らせる可能性があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

注意

を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については 、Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

注意

送信が正常に完了しても、データが正常に配信されたことを示すものではありません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに入っていない限り、send はブロックします。

Note

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

適用対象

Send(Byte[], SocketFlags)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した SocketFlags を使用して、接続された Socket にデータを送信します。

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

パラメーター

buffer
Byte[]

送信されるデータを含む Byte 型の配列。

socketFlags
SocketFlags

SocketFlags 値のビットごとの組み合わせ。

戻り値

Socket に送信されたバイト数。

例外

buffernullです。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

次のコード例は、接続されている 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

注釈

Sendは、 メソッドまたは Accept メソッドで確立されたリモート ホストにConnectデータを同期的に送信し、正常に送信されたバイト数を返します。 メソッドは Send 、接続指向プロトコルとコネクションレス プロトコルの両方に使用できます。

このオーバーロードには、送信するデータと のビットごとの組み合わせを SocketFlags含むバッファーが必要です。 バッファー オフセットの既定値は 0 で、送信するバイト数は既定でバッファーのサイズになります。 パラメーター値として フラグをDontRoutesocketflags指定した場合、送信するデータはルーティングされません。

コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び出す Connect 必要があります。または Send 、 を SocketExceptionスローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。

コネクションレス プロトコルを使用していて、複数の異なるホストにデータを送信する予定がある場合は、 メソッドを使用する SendTo 必要があります。 メソッドを SendTo 使用しない場合は、 を呼び出す前に メソッドを Connect 呼び出す Send必要があります。 を使用して既定のリモート ホストConnectを確立した後でも、 を使用SendToできます。 を別の呼び出しで呼び出 Send す前に、既定のリモート ホストを Connect変更することもできます。

接続指向プロトコルを使用している場合は、 Send を使用 Socket.SendTimeoutしてタイムアウトが設定されていない限り、バッファー内のすべてのバイトが送信されるまでブロックされます。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send バッファー内のバイト数より小さい値を送信した場合でも、正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションが要求されたバイト数を送信するまで操作を再試行するのは、アプリケーションの責任です。 また、送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは大量の送信データが収集されるまで送信を遅らせる可能性があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

注意

バッファーのサイズが、基になるサービス プロバイダーの最大パケット サイズを超えないようにする必要があります。 送信された場合、データグラムは送信されず、 SendSocketExceptionスローされます。 を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については 、Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

注意

送信が正常に完了しても、データが正常に配信されたことを示すものではありません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに入っていない限り、send はブロックします。

Note

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

こちらもご覧ください

適用対象

Send(ReadOnlySpan<Byte>, SocketFlags)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した SocketFlags を使用して、接続された Socket にデータを送信します。

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

パラメーター

buffer
ReadOnlySpan<Byte>

送信されるデータを含むバイトのスパン。

socketFlags
SocketFlags

送受信の動作を指定する列挙値のビットごとの組み合わせ。

戻り値

Socket に送信されたバイト数。

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

こちらもご覧ください

適用対象

Send(Byte[])

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

接続された 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

パラメーター

buffer
Byte[]

送信されるデータを含む Byte 型の配列。

戻り値

Socket に送信されたバイト数。

例外

buffernullです。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

次のコード例は、接続されている 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

注釈

Sendは、 メソッドまたは Accept メソッドで指定されたリモート ホストにConnectデータを同期的に送信し、正常に送信されたバイト数を返します。 Send は、接続指向プロトコルとコネクションレス プロトコルの両方に使用できます。

このオーバーロードには、送信するデータを含むバッファーが必要です。 値の既定値は 0、バッファー オフセットの既定値は SocketFlags 0、送信するバイト数は既定でバッファーのサイズになります。

コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び出す Connect 必要があります。または Send 、 を SocketExceptionスローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。

コネクションレス プロトコルを使用していて、複数の異なるホストにデータを送信する予定がある場合は、 メソッドを使用する SendTo 必要があります。 メソッドを SendTo 使用しない場合は、 を呼び出す前に を呼び出 ConnectSend必要があります。 を使用して既定のリモート ホストConnectを確立した後でも、 を使用SendToできます。 を別の呼び出しで呼び出 Send す前に、既定のリモート ホストを Connect変更することもできます。

接続指向プロトコルを使用している場合は、 Send を使用 Socket.SendTimeoutしてタイムアウトが設定されていない限り、バッファー内のすべてのバイトが送信されるまでブロックされます。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send バッファー内のバイト数より小さい値を送信した場合でも、正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションがバッファー内のバイトを送信するまで操作を再試行するのは、アプリケーションの責任です。 また、送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは大量の送信データが収集されるまで送信を遅らせる可能性があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

注意

を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については 、Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

注意

送信が正常に完了しても、データが正常に配信されたことを示すものではありません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに入っていない限り、send はブロックします。

Note

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

こちらもご覧ください

適用対象