socket_sendとは? わかりやすく解説

Weblio 辞書 > コンピュータ > PHP関数リファレンス > socket_sendの意味・解説 

socket_send

(PHP 4 >= 4.0.7, PHP 5)
socket_send — 接続したソケットにデータを送信する

説明

int socket_send ( resource socket, string buf, int len, int flags )
関数 socket_send() は、 buf からソケット socket に len バイトのデータを送信します。
flags は、以下の一覧の中から OR で組み合わせたものです。 表 288. flags がとりうる値
0x1 OOB(out-of-band: 帯域外)データを処理します。
0x2 やってくるメッセージを受け取ります。
0x4 ルータを使用せず、直接つながっているインターフェースのみを 使用します。
0x8 レコードでデータがそろいます。
0x100 トランザクションでデータがそろいます。


socket_sendmsg() および socket_sendto() も参照ください。

Socket.Send メソッド (Byte[], Int32, Int32, SocketFlags)

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

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

Public Function Send ( _
    buffer As Byte(), _
    offset As Integer, _
    size As Integer, _
    socketFlags As SocketFlags _
) As Integer
Dim instance As Socket
Dim buffer As Byte()
Dim offset As Integer
Dim size As Integer
Dim socketFlags As SocketFlags
Dim returnValue As Integer

returnValue = instance.Send(buffer, offset, size, socketFlags)
public int Send (
    byte[] buffer,
    int offset,
    int size,
    SocketFlags socketFlags
)
public:
int Send (
    array<unsigned char>^ buffer, 
    int offset, 
    int size, 
    SocketFlags socketFlags
)
public int Send (
    byte[] buffer, 
    int offset, 
    int size, 
    SocketFlags socketFlags
)
public function Send (
    buffer : byte[], 
    offset : int, 
    size : int, 
    socketFlags : SocketFlags
) : int

パラメータ

buffer

送信するデータを格納する Byte 型の配列。

offset

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

size

送信するバイト数。

socketFlags

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

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

例外例外
例外の種類条件

ArgumentNullException

buffer が null 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

offset が 0 未満です。

または

offset が buffer の長さを超えています。

または

size が 0 未満です。

または

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

SocketException

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

または

Socket にアクセス中にオペレーティング システム エラーが発生しました。詳細については「解説」を参照してください。

ObjectDisposedException

Socket は閉じられています。

解説解説

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

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

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

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

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

コネクション指向のプロトコルを使用している場合、Send は、Socket.SendTimeout を使用してタイムアウトが設定されていない限り、要求されたバイト数が送信されるまでブロックします。タイムアウト値を超えた場合、Send 呼び出しで SocketException がスローされます。非ブロッキングモードでは、要求したバイト数より Send が送信したバイト数の方が小さくても、このメソッドは正常に完了します。送信されたバイト数を監視し、要求されたバイト数をすべて送信するまで操作を再試行することは、アプリケーション側の責任です。また、送信したデータがすぐにネットワーク上に現れることは保証されません。ネットワークの効率を高めるため、基になっているシステムは、十分な量の送信データが収集されるまで送信を遅延することがあります。Send メソッドが正常に完了した場合は、基になるシステムにネットワーク送信のためにデータをバッファする余地があったことを示します。

メモメモ

SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。

Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows CE プラットフォームメモ : このメソッドで長さ 0 のデータを送信した場合の結果は、.NET Compact Framework ではなく、ネイティブ オペレーティング システムによって決まります。

使用例使用例

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

' 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

// 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, 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);
        return (e.ErrorCode);
    }
    return 0;
}
// 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)
{
    ubyte msg[] = Encoding.get_UTF8().GetBytes("This is a test");
    ubyte bytes[] = new ubyte[256];
    try {
        // Blocks until send returns.
        int i = server.Send(msg, 0, msg.get_Length(), SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", (Int32)i);
        // Get reply from the server.
        server.Receive(bytes, 0, server.get_Available(), SocketFlags.None);
        Console.WriteLine(Encoding.get_UTF8().GetString(bytes));
    }
    catch (SocketException e) {
        Console.WriteLine("{0} Error code: {1}.", e.get_Message(),
            (Int32)e.get_ErrorCode());
        return e.get_ErrorCode();
    }
    return 0;
} //SendReceiveTest4
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Socket クラス
Socket メンバ
System.Net.Sockets 名前空間
Connect
SendTo
SocketFlags
SetSocketOption

Socket.Send メソッド (ジェネリック IList)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

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

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

Public Function Send ( _
    buffers As IList(Of ArraySegment(Of
 Byte)) _
) As Integer
Dim instance As Socket
Dim buffers As IList(Of
 ArraySegment(Of Byte))
Dim returnValue As Integer

returnValue = instance.Send(buffers)
public int Send (
    IList<ArraySegment<byte>> buffers
)
public:
int Send (
    IList<ArraySegment<unsigned char>>^ buffers
)
public int Send (
    IList<ArraySegment<byte>> buffers
)
public function Send (
    buffers : IList<ArraySegment<byte>>
) : int

パラメータ

buffers

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

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

例外例外
例外の種類条件

ArgumentNullException

buffers が null 参照 (Visual Basic では Nothing) です。

ArgumentException

buffers が空です。

SocketException

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

ObjectDisposedException

Socket は閉じられています。

解説解説

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

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

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

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

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

メモメモ

SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.Send メソッド (Byte[], Int32, SocketFlags)

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

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

Public Function Send ( _
    buffer As Byte(), _
    size As Integer, _
    socketFlags As SocketFlags _
) As Integer
Dim instance As Socket
Dim buffer As Byte()
Dim size As Integer
Dim socketFlags As SocketFlags
Dim returnValue As Integer

returnValue = instance.Send(buffer, size, socketFlags)
public int Send (
    byte[] buffer,
    int size,
    SocketFlags socketFlags
)
public:
int Send (
    array<unsigned char>^ buffer, 
    int size, 
    SocketFlags socketFlags
)
public int Send (
    byte[] buffer, 
    int size, 
    SocketFlags socketFlags
)
public function Send (
    buffer : byte[], 
    size : int, 
    socketFlags : SocketFlags
) : int

パラメータ

buffer

送信するデータを格納する Byte 型の配列。

size

送信するバイト数。

socketFlags

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

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

例外例外
例外の種類条件

ArgumentNullException

buffer が null 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

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

SocketException

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

または

ソケットへのアクセス中にオペレーティング システム エラーが発生しました。詳細については「解説」を参照してください。

ObjectDisposedException

Socket は閉じられています。

解説解説

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

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

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

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

コネクション指向のプロトコルを使用している場合、Send は、Socket.SendTimeout を使用してタイムアウトが設定されていない限り、要求されたバイト数が送信されるまでブロックします。タイムアウト値を超えた場合、Send 呼び出しで SocketException がスローされます。非ブロッキングモードでは、要求したバイト数より Send が送信したバイト数の方が小さくても、このメソッドは正常に完了します。送信されたバイト数を監視し、要求されたバイト数をすべて送信するまで操作を再試行することは、アプリケーション側の責任です。また、送信したデータがすぐにネットワーク上に現れることは保証されません。ネットワークの効率を高めるため、基になっているシステムは、十分な量の送信データが収集されるまで送信を遅延することがあります。Send メソッドが正常に完了した場合は、基になるシステムにネットワーク送信のためにデータをバッファする余地があったことを示します。

メモメモ

バッファのサイズが、基になるサービス プロバイダの最大パケット サイズを超えないことを確認する必要があります。最大サイズを超えている場合、データグラムは送信されず、Send は SocketException をスローします。SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。

Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows CE プラットフォームメモ : このメソッドで長さ 0 のデータを送信した場合の結果は、.NET Compact Framework ではなく、ネイティブ オペレーティング システムによって決まります。

使用例使用例

バッファで見つかったデータを送信し、SocketFlags に None を指定するコード例を次に示します。

' 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

// 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, 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);
        return (e.ErrorCode);
    }
    return 0;
}
// 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)
{
    ubyte msg[] = Encoding.get_UTF8().GetBytes("This is a test");
    ubyte bytes[] = new ubyte[256];
    try {
        // Blocks until send returns.
        int i = server.Send(msg, msg.get_Length(), SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", (Int32)i);
        // Get reply from the server.
        server.Receive(bytes, server.get_Available(), SocketFlags.None);
        Console.WriteLine(Encoding.get_UTF8().GetString(bytes));
    }
    catch (SocketException e) {
        Console.WriteLine("{0} Error code: {1}.", e.get_Message(),
            (Int32)e.get_ErrorCode());
        return e.get_ErrorCode();
    }
    return 0;
} //SendReceiveTest3
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Socket クラス
Socket メンバ
System.Net.Sockets 名前空間
Connect
SendTo
SocketFlags
SetSocketOption

Socket.Send メソッド (Byte[], SocketFlags)

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

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

Public Function Send ( _
    buffer As Byte(), _
    socketFlags As SocketFlags _
) As Integer
Dim instance As Socket
Dim buffer As Byte()
Dim socketFlags As SocketFlags
Dim returnValue As Integer

returnValue = instance.Send(buffer, socketFlags)
public int Send (
    byte[] buffer,
    SocketFlags socketFlags
)
public:
int Send (
    array<unsigned char>^ buffer, 
    SocketFlags socketFlags
)
public int Send (
    byte[] buffer, 
    SocketFlags socketFlags
)
public function Send (
    buffer : byte[], 
    socketFlags : SocketFlags
) : int

パラメータ

buffer

送信するデータを格納する Byte 型の配列。

socketFlags

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

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

例外例外
例外の種類条件

ArgumentNullException

buffer が null 参照 (Visual Basic では Nothing) です。

SocketException

ソケットへのアクセスを試みているときにエラーが発生しました。詳細については「解説」を参照してください。

ObjectDisposedException

Socket は閉じられています。

解説解説

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

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

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

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

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

メモメモ

バッファのサイズが、基になるサービス プロバイダの最大パケット サイズを超えないことを確認する必要があります。最大サイズを超えている場合、データグラムは送信されず、Send は SocketException をスローします。SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。

Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows CE プラットフォームメモ : このメソッドで長さ 0 のデータを送信した場合の結果は、.NET Compact Framework ではなく、ネイティブ オペレーティング システムによって決まります。

使用例使用例

接続された Socket にデータを送信するコード例を次に示します。

' 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

// 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.
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)
{
    ubyte msg[] = Encoding.get_UTF8().GetBytes("This is a test");
    ubyte bytes[] = new ubyte[256];
    try {
        // Blocks until send returns.
        int i = server.Send(msg, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", (Int32)i);
        // Get reply from the server.
        i = server.Receive(bytes, SocketFlags.None);
        Console.WriteLine(Encoding.get_UTF8().GetString(bytes));
    }
    catch (SocketException e) {
        Console.WriteLine("{0} Error code: {1}.", e.get_Message(),
            (Int32)e.get_ErrorCode());
        return e.get_ErrorCode();
    }
    return 0;
} //SendReceiveTest2
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Socket クラス
Socket メンバ
System.Net.Sockets 名前空間
Connect
SendTo
SocketFlags
SetSocketOption

Socket.Send メソッド (ジェネリック IList, SocketFlags, SocketError)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

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

このメソッドは、CLS に準拠していません。  CLS に準拠する代替が必要な場合は、Send(Byte[],Int32,SocketFlags) を使用してください。

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

<CLSCompliantAttribute(False)> _
Public Function Send ( _
    buffers As IList(Of ArraySegment(Of
 Byte)), _
    socketFlags As SocketFlags, _
    <OutAttribute> ByRef errorCode As
 SocketError _
) As Integer
Dim instance As Socket
Dim buffers As IList(Of
 ArraySegment(Of Byte))
Dim socketFlags As SocketFlags
Dim errorCode As SocketError
Dim returnValue As Integer

returnValue = instance.Send(buffers, socketFlags, errorCode)
[CLSCompliantAttribute(false)] 
public int Send (
    IList<ArraySegment<byte>> buffers,
    SocketFlags socketFlags,
    out SocketError errorCode
)
[CLSCompliantAttribute(false)] 
public:
int Send (
    IList<ArraySegment<unsigned char>>^ buffers, 
    SocketFlags socketFlags, 
    [OutAttribute] SocketError% errorCode
)
/** @attribute CLSCompliantAttribute(false) */ 
public int Send (
    IList<ArraySegment<byte>> buffers, 
    SocketFlags socketFlags, 
    /** @attribute OutAttribute() */ /** @ref */ SocketError errorCode
)
JScript では、値型の引数は参照渡しされません。

パラメータ

buffers

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

socketFlags

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

errorCode

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

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

例外例外
例外の種類条件

ArgumentNullException

buffers が null 参照 (Visual Basic では Nothing) です。

ArgumentException

buffers が空です。

SocketException

ソケットへのアクセスを試みているときにエラーが発生しました。詳細については「解説」を参照してください。

ObjectDisposedException

Socket は閉じられています。

解説解説

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

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

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

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

メモメモ

SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.Send メソッド (Byte[], Int32, Int32, SocketFlags, SocketError)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

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

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

Public Function Send ( _
    buffer As Byte(), _
    offset As Integer, _
    size As Integer, _
    socketFlags As SocketFlags, _
    <OutAttribute> ByRef errorCode As
 SocketError _
) As Integer
Dim instance As Socket
Dim buffer As Byte()
Dim offset As Integer
Dim size As Integer
Dim socketFlags As SocketFlags
Dim errorCode As SocketError
Dim returnValue As Integer

returnValue = instance.Send(buffer, offset, size, socketFlags, errorCode)
public int Send (
    byte[] buffer,
    int offset,
    int size,
    SocketFlags socketFlags,
    out SocketError errorCode
)
public:
int Send (
    array<unsigned char>^ buffer, 
    int offset, 
    int size, 
    SocketFlags socketFlags, 
    [OutAttribute] SocketError% errorCode
)
public int Send (
    byte[] buffer, 
    int offset, 
    int size, 
    SocketFlags socketFlags, 
    /** @attribute OutAttribute() */ /** @ref */ SocketError errorCode
)
JScript では、値型の引数は参照渡しされません。

パラメータ

buffer

送信するデータを格納する Byte 型の配列。

offset

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

size

送信するバイト数。

socketFlags

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

errorCode

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

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

例外例外
例外の種類条件

ArgumentNullException

buffer が null 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

offset が 0 未満です。

または

offset が buffer の長さを超えています。

または

size が 0 未満です。

または

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

SocketException

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

または

Socket にアクセス中にオペレーティング システム エラーが発生しました。詳細については「解説」を参照してください。

ObjectDisposedException

Socket は閉じられています。

解説解説

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

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

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

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

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

コネクション指向のプロトコルを使用している場合、Send は、Socket.SendTimeout を使用してタイムアウトが設定されていない限り、要求されたバイト数が送信されるまでブロックします。タイムアウト値を超えた場合、Send 呼び出しで SocketException がスローされます。非ブロッキングモードでは、要求したバイト数より Send が送信したバイト数の方が小さくても、このメソッドは正常に完了します。送信されたバイト数を監視し、要求されたバイト数をすべて送信するまで操作を再試行することは、アプリケーション側の責任です。また、送信したデータがすぐにネットワーク上に現れることは保証されません。ネットワークの効率を高めるため、基になっているシステムは、十分な量の送信データが収集されるまで送信を遅延することがあります。Send メソッドが正常に完了した場合は、基になるシステムにネットワーク送信のためにデータをバッファする余地があったことを示します。

メモメモ

SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。

Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows CE プラットフォームメモ : このメソッドで長さ 0 のデータを送信した場合の結果は、.NET Compact Framework ではなく、ネイティブ オペレーティング システムによって決まります。

使用例使用例

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

' 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

// 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, 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);
        return (e.ErrorCode);
    }
    return 0;
}
// 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)
{
    ubyte msg[] = Encoding.get_UTF8().GetBytes("This is a test");
    ubyte bytes[] = new ubyte[256];
    try {
        // Blocks until send returns.
        int i = server.Send(msg, 0, msg.get_Length(), SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", (Int32)i);
        // Get reply from the server.
        server.Receive(bytes, 0, server.get_Available(), SocketFlags.None);
        Console.WriteLine(Encoding.get_UTF8().GetString(bytes));
    }
    catch (SocketException e) {
        Console.WriteLine("{0} Error code: {1}.", e.get_Message(),
            (Int32)e.get_ErrorCode());
        return e.get_ErrorCode();
    }
    return 0;
} //SendReceiveTest4
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Socket クラス
Socket メンバ
System.Net.Sockets 名前空間
Connect
SendTo
SocketFlags
SetSocketOption

Socket.Send メソッド

接続された Socket にデータを送信します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
Socket.Send (Byte[]) 接続された Socket にデータを送信します。

.NET Compact Framework によってサポートされています。

Socket.Send (ジェネリック IList) リスト内のバッファのセットを接続された Socket に送信します。
Socket.Send (Byte[], SocketFlags) 指定した SocketFlags を使用して、接続された Socket にデータを送信します。

.NET Compact Framework によってサポートされています。

Socket.Send (ジェネリック IList, SocketFlags) 指定した SocketFlags を使用して、リスト内のバッファのセットを接続された Socket に送信します。
Socket.Send (Byte[], Int32, SocketFlags) 指定した SocketFlags を使用し、指定したバイト数のデータを、接続された Socket に送信します。

.NET Compact Framework によってサポートされています。

Socket.Send (ジェネリック IList, SocketFlags, SocketError) 指定した SocketFlags を使用して、リスト内のバッファのセットを接続された Socket に送信します。
Socket.Send (Byte[], Int32, Int32, SocketFlags) 指定した SocketFlags を使用し、指定したバイト数のデータを、接続された Socket に送信します。送信は指定したオフセットから開始されます。

.NET Compact Framework によってサポートされています。

Socket.Send (Byte[], Int32, Int32, SocketFlags, SocketError) 指定した SocketFlags を使用し、指定したバイト数のデータを、接続された Socket に送信します。送信は指定したオフセットから開始されます。
参照参照

関連項目

Socket クラス
Socket メンバ
System.Net.Sockets 名前空間
Connect
SendTo
SocketFlags
SetSocketOption

Socket.Send メソッド (Byte[])

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

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

例外例外
例外の種類条件

ArgumentNullException

buffer が null 参照 (Visual Basic では Nothing) です。

SocketException

ソケットへのアクセスを試みているときにエラーが発生しました。詳細については「解説」を参照してください。

ObjectDisposedException

Socket は閉じられています。

解説解説

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

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

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

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

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

メモメモ

SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。

Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows CE プラットフォームメモ : このメソッドで長さ 0 のデータを送信した場合の結果は、.NET Compact Framework ではなく、デバイスのネイティブ オペレーティング システムによって決まります。

使用例使用例

接続された Socket にデータを送信するコード例を次に示します。

' 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

// 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.
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)
{
    ubyte msg[] = Encoding.get_UTF8().GetBytes("This is a test");
    ubyte bytes[] = new ubyte[256];
    try {
        // Blocks until send returns.
        int i = server.Send(msg);
        Console.WriteLine("Sent {0} bytes.", (Int32)i);
        // Get reply from the server.
        i = server.Receive(bytes);
        Console.WriteLine(Encoding.get_UTF8().GetString(bytes));
    }
    catch (SocketException e) {
        Console.WriteLine("{0} Error code: {1}.", e.get_Message(),
            (Int32)(e.get_ErrorCode()));
        return e.get_ErrorCode();
    }
    return 0;
} //SendReceiveTest1
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Socket クラス
Socket メンバ
System.Net.Sockets 名前空間
Connect
SendTo
SocketFlags
SetSocketOption

Socket.Send メソッド (ジェネリック IList, SocketFlags)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

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

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

Public Function Send ( _
    buffers As IList(Of ArraySegment(Of
 Byte)), _
    socketFlags As SocketFlags _
) As Integer
Dim instance As Socket
Dim buffers As IList(Of
 ArraySegment(Of Byte))
Dim socketFlags As SocketFlags
Dim returnValue As Integer

returnValue = instance.Send(buffers, socketFlags)
public int Send (
    IList<ArraySegment<byte>> buffers,
    SocketFlags socketFlags
)
public:
int Send (
    IList<ArraySegment<unsigned char>>^ buffers, 
    SocketFlags socketFlags
)
public int Send (
    IList<ArraySegment<byte>> buffers, 
    SocketFlags socketFlags
)
public function Send (
    buffers : IList<ArraySegment<byte>>, 
    socketFlags : SocketFlags
) : int

パラメータ

buffers

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

socketFlags

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

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

例外例外
例外の種類条件

ArgumentNullException

buffers が null 参照 (Visual Basic では Nothing) です。

ArgumentException

buffers が空です。

SocketException

ソケットへのアクセスを試みているときにエラーが発生しました。詳細については「解説」を参照してください。

ObjectDisposedException

Socket は閉じられています。

解説解説

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

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

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

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

メモメモ

SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「socket_send」の関連用語

socket_sendのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



socket_sendのページの著作権

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2026 by the PHP Documentation Group.
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS