Socket.Send メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
接続された 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 使用しない場合は、 を呼び出す前に を呼び出 Connect す Send必要があります。 を使用して既定のリモート ホストConnectを確立した後でも、 を使用SendToできます。 を別の呼び出しで呼び出す Send 前に、既定のリモート ホストを Connect変更することもできます。
接続指向プロトコルを使用している場合、 は、 Send を使用 Socket.SendTimeoutしてタイムアウトが設定されていない限り、バッファー内のすべてのバイトが送信されるまでブロックします。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send バッファー内のバイト数より少ないバイト数を送信した場合でも、正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションがバッファー内のバイトを送信するまで操作を再試行するのは、アプリケーションの責任です。 また、送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは、大量の送信データが収集されるまで送信を遅らせる場合があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。
注意
を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。
このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。
重要
送信が正常に完了しても、データが正常に配信されたことは示されません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに設定されていない限り、send はブロックします。
こちらもご覧ください
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
適用対象
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 使用しない場合は、 を呼び出す前に を呼び出 Connect す Send必要があります。 を使用して既定のリモート ホストConnectを確立した後でも、 を使用SendToできます。 を別の呼び出しで呼び出す Send 前に、既定のリモート ホストを Connect変更することもできます。
接続指向プロトコルを使用している場合、 は、 Send を使用 Socket.SendTimeoutしてタイムアウトが設定されていない限り、バッファー内のすべてのバイトが送信されるまでブロックします。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send バッファー内のバイト数より少ないバイト数を送信した場合でも、正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションがバッファー内のバイトを送信するまで操作を再試行するのは、アプリケーションの責任です。 また、送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは、大量の送信データが収集されるまで送信を遅らせる場合があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。
注意
を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。
このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。
重要
送信が正常に完了しても、データが正常に配信されたことは示されません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに設定されていない限り、send はブロックします。
こちらもご覧ください
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
適用対象
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
パラメーター
- offset
- Int32
データの送信を開始する、データ バッファー内の位置。
- size
- Int32
送信するバイト数。
- socketFlags
- SocketFlags
SocketFlags 値のビットごとの組み合わせ。
- errorCode
- SocketError
ソケット エラーを格納する SocketError オブジェクト。
戻り値
Socket に送信されたバイト数。
例外
buffer
が null
です。
offset
が 0 未満です。
または
offset
が buffer
の長さを超えています。
または
size
が 0 未満です。
- または -
size
が、buffer
の長さから offset
パラメーターの値を引いた値を超えています。
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変更することもできます。
また、そのサイズが基になるサービス プロバイダーの最大パケット サイズを超えないようにする必要もあります。 その場合、データグラムは送信されず、 Send が SocketExceptionスローされます。
接続指向プロトコルを使用している場合、 は、 Send を使用 Socket.SendTimeoutしてタイムアウトが設定されていない限り、要求されたバイト数が送信されるまでブロックします。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send 要求したバイト数未満の送信でも正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションが要求されたバイト数を送信するまで操作を再試行するのは、アプリケーションの責任です。 送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは、大量の送信データが収集されるまで送信を遅らせる場合があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。
注意
を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。
注意
送信が正常に完了しても、データが正常に配信されたことは示されません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに設定されていない限り、send はブロックします。
Note
このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。
こちらもご覧ください
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
適用対象
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 に送信されたバイト数。
例外
buffers
が null
です。
buffers
が空です。
ソケットへのアクセスを試行しているときにエラーが発生しました。
Socket が閉じられました。
注釈
このオーバーロードには、送信するデータを含むバッファーが少なくとも 1 つ必要です。 この値の既定値は SocketFlags 0 です。 パラメーターとして フラグをDontRoutesocketFlags
指定した場合、送信するデータはルーティングされません。
コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び出す Connect 必要があります。または Send 、 を SocketExceptionスローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。
コネクションレス プロトコルを使用していて、複数の異なるホストにデータを送信する予定がある場合は、 メソッドを使用する SendTo 必要があります。 メソッドを SendTo 使用しない場合は、 を呼び出す前に を呼び出 Connect す Send必要があります。 を使用して既定のリモート ホスト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
パラメーター
- offset
- Int32
データの送信を開始する、データ バッファー内の位置。
- size
- Int32
送信するバイト数。
- socketFlags
- SocketFlags
SocketFlags 値のビットごとの組み合わせ。
戻り値
Socket に送信されたバイト数。
例外
buffer
が null
です。
offset
が 0 未満です。
または
offset
が buffer
の長さを超えています。
または
size
が 0 未満です。
- または -
size
が、buffer
の長さから offset
パラメーターの値を引いた値を超えています。
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変更することもできます。
また、そのサイズが基になるサービス プロバイダーの最大パケット サイズを超えないようにする必要もあります。 その場合、データグラムは送信されず、 Send が SocketExceptionスローされます。
接続指向プロトコルを使用している場合、 は、 Send を使用 Socket.SendTimeoutしてタイムアウトが設定されていない限り、要求されたバイト数が送信されるまでブロックします。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send 要求したバイト数未満の送信でも正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションが要求されたバイト数を送信するまで操作を再試行するのは、アプリケーションの責任です。 送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは、大量の送信データが収集されるまで送信を遅らせる場合があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。
注意
を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。
注意
送信が正常に完了しても、データが正常に配信されたことは示されません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに設定されていない限り、send はブロックします。
Note
このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。
こちらもご覧ください
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
適用対象
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
パラメーター
- size
- Int32
送信するバイト数。
- socketFlags
- SocketFlags
SocketFlags 値のビットごとの組み合わせ。
戻り値
Socket に送信されたバイト数。
例外
buffer
が null
です。
size
が 0 未満か、バッファーのサイズを超える値です。
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 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。
注意
そのサイズが、基になるサービス プロバイダーの最大パケット サイズを超えないようにする必要があります。 その場合、データグラムは送信されないため、 Send が SocketExceptionスローされます。 を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。
このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。
重要
送信が正常に完了しても、データが正常に配信されたことは示されません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに設定されていない限り、send はブロックします。
こちらもご覧ください
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
適用対象
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 に送信されたバイト数。
例外
buffers
が null
です。
buffers
が空です。
ソケットへのアクセスを試行しているときにエラーが発生しました。 以下の解説を参照してください。
Socket が閉じられました。
注釈
Send は、接続指向プロトコルとコネクションレス プロトコルの両方に使用できます。
このオーバーロードには、送信するデータを含むバッファーが少なくとも 1 つ必要です。
コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び出す Connect 必要があります。または Send 、 を SocketExceptionスローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。
コネクションレス プロトコルを使用していて、複数の異なるホストにデータを送信する予定がある場合は、 メソッドを使用する SendTo 必要があります。 メソッドを SendTo 使用しない場合は、 を呼び出す前に を呼び出 Connect す Send必要があります。 を使用して既定のリモート ホスト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 に送信されたバイト数。
例外
buffers
が null
です。
buffers
が空です。
ソケットへのアクセスを試行しているときにエラーが発生しました。
Socket が閉じられました。
注釈
このオーバーロードには、送信するデータを含むバッファーが少なくとも 1 つ必要です。 この値の既定値は SocketFlags 0 です。 パラメーターとして フラグをDontRoutesocketFlags
指定した場合、送信するデータはルーティングされません。
コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び出す Connect 必要があります。または Send 、 を SocketExceptionスローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。
コネクションレス プロトコルを使用していて、複数の異なるホストにデータを送信する予定がある場合は、 メソッドを使用する SendTo 必要があります。 メソッドを SendTo 使用しない場合は、 を呼び出す前に を呼び出 Connect す Send必要があります。 を使用して既定のリモート ホスト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
パラメーター
- socketFlags
- SocketFlags
SocketFlags 値のビットごとの組み合わせ。
戻り値
Socket に送信されたバイト数。
例外
buffer
が null
です。
ソケットへのアクセスを試行しているときにエラーが発生しました。
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 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。
注意
バッファーのサイズが、基になるサービス プロバイダーの最大パケット サイズを超えないようにする必要があります。 その場合、データグラムは送信されず、 Send が SocketExceptionスローされます。 を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。
注意
送信が正常に完了しても、データが正常に配信されたことは示されません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに設定されていない限り、send はブロックします。
Note
このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。
こちらもご覧ください
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
適用対象
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 が閉じられました。
こちらもご覧ください
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
適用対象
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
パラメーター
戻り値
Socket に送信されたバイト数。
例外
buffer
が null
です。
ソケットへのアクセスを試行しているときにエラーが発生しました。
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 使用しない場合は、 を呼び出す前に を呼び出 Connect す Send必要があります。 を使用して既定のリモート ホストConnectを確立した後でも、 を使用SendToできます。 を別の呼び出しで呼び出 Send す前に、既定のリモート ホストを Connect変更することもできます。
接続指向プロトコルを使用している場合、 は、 Send を使用 Socket.SendTimeoutしてタイムアウトが設定されていない限り、バッファー内のすべてのバイトが送信されるまでブロックします。 タイムアウト値を超えた場合、呼び出し Send は を SocketExceptionスローします。 非ブロッキング モードでは、 Send バッファー内のバイト数より少ないバイト数を送信した場合でも、正常に完了する可能性があります。 送信されたバイト数を追跡し、アプリケーションがバッファー内のバイトを送信するまで操作を再試行するのは、アプリケーションの責任です。 送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは、大量の送信データが収集されるまで送信を遅らせる場合があります。 メソッドが正常に Send 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。
注意
を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。
注意
送信が正常に完了しても、データが正常に配信されたことは示されません。 転送するデータを保持するためにトランスポート・システム内に使用可能なバッファー・スペースがない場合、ソケットが非ブロッキング・モードに設定されていない限り、send はブロックします。
Note
このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。
こちらもご覧ください
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
適用対象
.NET