socket_send
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)
アセンブリ: 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)
戻り値
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

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Send メソッド (ジェネリック IList)
アセンブリ: System (system.dll 内)

Dim instance As Socket Dim buffers As IList(Of ArraySegment(Of Byte)) Dim returnValue As Integer returnValue = instance.Send(buffers)
戻り値
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 ライブラリから入手できます。 |

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Send メソッド (Byte[], Int32, SocketFlags)
アセンブリ: 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)
戻り値
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

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Send メソッド (Byte[], SocketFlags)
アセンブリ: System (system.dll 内)

Dim instance As Socket Dim buffer As Byte() Dim socketFlags As SocketFlags Dim returnValue As Integer returnValue = instance.Send(buffer, socketFlags)
戻り値
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

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Send メソッド (ジェネリック IList, SocketFlags, SocketError)
アセンブリ: 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 )
戻り値
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 ライブラリから入手できます。 |

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Send メソッド (Byte[], Int32, Int32, SocketFlags, SocketError)
アセンブリ: 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 )
戻り値
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

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Send メソッド

名前 | 説明 |
---|---|
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.Send メソッド (Byte[])
アセンブリ: System (system.dll 内)

Dim instance As Socket Dim buffer As Byte() Dim returnValue As Integer returnValue = instance.Send(buffer)
戻り値
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

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Send メソッド (ジェネリック IList, SocketFlags)
アセンブリ: 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)
戻り値
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 ライブラリから入手できます。 |

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- socket_sendのページへのリンク