Socket.SendTo メソッド

定義

データを特定のエンドポイントに送信します。

オーバーロード

SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)

指定した SocketFlags を使用し、指定したバイト数のデータを、指定したエンドポイントに送信します。送信はバッファー内の指定した位置から開始されます。

SendTo(Byte[], Int32, SocketFlags, EndPoint)

指定した SocketFlags を使用し、指定したバイト数のデータを、指定したエンドポイントに送信します。

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

指定した SocketFlags を使用して、特定のエンドポイントにデータを送信します。

SendTo(ReadOnlySpan<Byte>, EndPoint)

指定したエンドポイントにデータを送信します。

SendTo(Byte[], SocketFlags, EndPoint)

指定した SocketFlags を使用して、特定のエンドポイントにデータを送信します。

SendTo(Byte[], EndPoint)

指定したエンドポイントにデータを送信します。

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

指定した SocketFlags を使用して、特定のエンドポイントにデータを送信します。

SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)

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

指定した SocketFlags を使用し、指定したバイト数のデータを、指定したエンドポイントに送信します。送信はバッファー内の指定した位置から開始されます。

public:
 int SendTo(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * int * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint) As Integer

パラメーター

buffer
Byte[]

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

offset
Int32

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

size
Int32

送信するバイト数。

socketFlags
SocketFlags

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

remoteEP
EndPoint

データの送信先の位置を表す EndPoint

戻り値

送信されたバイト数。

例外

buffernullです。

または

remoteEPnullです。

offset が 0 未満です。

または

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

または

size が 0 未満です。

- または -

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

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

- または -

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

Socket が閉じられました。

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。

次のコード例では、指定したリモート ホストにコネクションレス データグラムを送信します。 オフセット、サイズ、および SocketFlags は メソッドに SendTo 渡されます。

static void SendTo4()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, 0, msg->Length, SocketFlags::None, endPoint );
   s->Close();
}
public static void SendTo4()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint);
    s.Close();
}
Public Shared Sub SendTo4() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint)
    s.Close()

End Sub

注釈

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

コネクションレス プロトコルを使用している場合は、 を呼び出すSendTo前に、 メソッドを使用して既定のConnectリモート ホストを確立する必要はありません。 これは、 メソッドを呼び出 Send す場合にのみ必要です。 を呼び出す前に メソッドを呼び出ConnectSendToした場合、 remoteEP パラメーターは、その送信操作に対してのみ指定された既定のリモート ホストをオーバーライドします。 また、基になるサービス プロバイダーによって最も適切なローカル ネットワーク アドレスとポート番号が割り当てられるため、 メソッドを呼び出す Bind 必要はありません。 割り当てられたローカル ネットワーク アドレスとポート番号を識別する必要がある場合は、 メソッドが LocalEndPoint 正常に完了した後に プロパティを SendTo 使用できます。

コネクションレス プロトコルを対象としていますが、 SendTo 接続指向プロトコルでも機能します。 接続指向プロトコルを使用している場合は、まず メソッドを呼び出してリモート ホスト接続を確立するか、 メソッドを Connect 使用して受信接続要求を Accept 受け入れる必要があります。 リモート ホスト接続を確立または受け入れない場合は、 SendTo がスロー SocketExceptionされます。 また、 メソッドを呼び出す前に、コネクションレス プロトコルの既定のリモート ホストを SendTo 確立することもできます。 いずれの場合も、 SendTo は パラメーターを remoteEP 無視し、接続されているリモート ホストまたは既定のリモート ホストにのみデータを送信します。

ブロックソケットは、要求されたバイト数が送信されるまでブロックされます。 非ブロッキング Socket は直ちに完了するため、1 回の操作で要求されたすべてのバイトが送信されない場合があります。 アプリケーションは、送信されたバイト数を追跡し、アプリケーションが要求されたバイト数を送信するまで操作を再試行する必要があります。 また、送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは大量の送信データが収集されるまで送信を遅らせる可能性があります。 メソッドが正常に SendTo 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

ブロッキング モードでコネクションレス プロトコルを使用している場合、 SendTo はデータグラムが送信されるまでブロックします。 ブロードキャスト アドレスにデータを送信する場合は、まず メソッドを SetSocketOption 呼び出し、ソケット オプションを に設定する SocketOptionName.Broadcast必要があります。 また、サイズが基になるサービス プロバイダーの最大パケット サイズを超えないようにする必要があります。 送信された場合、データグラムは送信されず、 SendToSocketExceptionスローされます。

注意

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

Note

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

こちらもご覧ください

適用対象

SendTo(Byte[], Int32, SocketFlags, EndPoint)

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

指定した SocketFlags を使用し、指定したバイト数のデータを、指定したエンドポイントに送信します。

public:
 int SendTo(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint) As Integer

パラメーター

buffer
Byte[]

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

size
Int32

送信するバイト数。

socketFlags
SocketFlags

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

remoteEP
EndPoint

データの送信先の位置を表す EndPoint

戻り値

送信されたバイト数。

例外

buffernullです。

または

remoteEPnullです。

指定した sizebuffer のサイズを超えています。

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

Socket が閉じられました。

次のコード例では、指定したリモート ホストにコネクションレス データグラムを送信します。 サイズ と SocketFlags は、 メソッドに SendTo 渡されます。

static void SendTo3()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, msg->Length, SocketFlags::None, endPoint );
   s->Close();
}
public static void SendTo3()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, msg.Length, SocketFlags.None, endPoint);
    s.Close();
}
Public Shared Sub SendTo3() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, msg.Length, SocketFlags.None, endPoint)
    s.Close()

End Sub

注釈

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

コネクションレス プロトコルを使用している場合は、 を呼び出すSendTo前に、 メソッドを使用して既定のConnectリモート ホストを確立する必要はありません。 これは、 メソッドを呼び出 Send す場合にのみ必要です。 を呼び出す前に メソッドを呼び出ConnectSendToした場合、 remoteEP パラメーターは、その送信操作に対してのみ指定された既定のリモート ホストをオーバーライドします。 また、基になるサービス プロバイダーによって最も適切なローカル ネットワーク アドレスとポート番号が割り当てられるため、 メソッドを呼び出す Bind 必要はありません。 割り当てられたローカル ネットワーク アドレスとポート番号を識別する必要がある場合は、 メソッドが LocalEndPoint 正常に完了した後に プロパティを SendTo 使用できます。

コネクションレス プロトコルを対象としていますが、 SendTo 接続指向プロトコルでも機能します。 接続指向プロトコルを使用している場合は、まず メソッドを呼び出してリモート ホスト接続を確立するか、 メソッドを Connect 使用して受信接続要求を Accept 受け入れる必要があります。 リモート ホスト接続を確立または受け入れない場合は、 SendTo がスロー SocketExceptionされます。 また、 メソッドを呼び出す前に、コネクションレス プロトコルの既定のリモート ホストを SendTo 確立することもできます。 いずれの場合も、 SendTo は パラメーターを remoteEP 無視し、接続されているリモート ホストまたは既定のリモート ホストにのみデータを送信します。

ブロックソケットは、要求されたバイト数が送信されるまでブロックされます。 非ブロック Socket 化はすぐに完了するため、1 回の操作で要求されたすべてのバイトが送信されない場合があります。 送信されたバイト数を追跡し、アプリケーションが要求されたバイト数を送信するまで操作を再試行するのは、アプリケーションの責任です。 また、送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは大量の送信データが収集されるまで送信を遅らせる可能性があります。 メソッドが正常に SendTo 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

ブロッキング モードでコネクションレス プロトコルを使用している場合、 SendTo はデータグラムが送信されるまでブロックします。 ブロードキャスト アドレスにデータを送信する場合は、まず メソッドを SetSocketOption 呼び出し、ソケット オプションを に設定する SocketOptionName.Broadcast必要があります。 また、送信されたバイト数が、基になるサービス プロバイダーの最大パケット サイズを超えないようにする必要もあります。 その場合、データグラムは送信されず、 SendToSocketExceptionスローされます。

注意

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

Note

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

こちらもご覧ください

適用対象

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

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

指定した SocketFlags を使用して、特定のエンドポイントにデータを送信します。

public:
 int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::SocketAddress ^ socketAddress);
public int SendTo (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress socketAddress);
member this.SendTo : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, socketAddress As SocketAddress) As Integer

パラメーター

buffer
ReadOnlySpan<Byte>

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

socketFlags
SocketFlags

データの送信時に SocketFlags 使用される値のビットごとの組み合わせ。

socketAddress
SocketAddress

データの送信先を表す SocketAddress

戻り値

送信されたバイト数。

例外

socketAddressnullです。

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

Socket が閉じられました。

適用対象

SendTo(ReadOnlySpan<Byte>, EndPoint)

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

指定したエンドポイントにデータを送信します。

public:
 int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::EndPoint ^ remoteEP);
public int SendTo (ReadOnlySpan<byte> buffer, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), remoteEP As EndPoint) As Integer

パラメーター

buffer
ReadOnlySpan<Byte>

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

remoteEP
EndPoint

データの送信先を表す EndPoint

戻り値

送信されたバイト数。

例外

remoteEPnullです。

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

Socket が閉じられました。

適用対象

SendTo(Byte[], SocketFlags, EndPoint)

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

指定した SocketFlags を使用して、特定のエンドポイントにデータを送信します。

public:
 int SendTo(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), socketFlags As SocketFlags, remoteEP As EndPoint) As Integer

パラメーター

buffer
Byte[]

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

socketFlags
SocketFlags

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

remoteEP
EndPoint

データの送信先の位置を表す EndPoint

戻り値

送信されたバイト数。

例外

buffernullです。

または

remoteEPnullです。

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

Socket が閉じられました。

次のコード例では、指定したリモート ホストにコネクションレス データグラムを送信します。 SocketFlags が メソッドに SendTo 渡されます。

static void SendTo2()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, SocketFlags::None, endPoint );
   s->Close();
}
public static void SendTo2()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, SocketFlags.None, endPoint);
    s.Close();
}
Public Shared Sub SendTo2() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, SocketFlags.None, endPoint)
    s.Close()

End Sub

注釈

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

コネクションレス プロトコルを使用している場合は、 を呼び出すSendTo前に、 メソッドを使用して既定のConnectリモート ホストを確立する必要はありません。 これは、 メソッドを呼び出 Send す場合にのみ必要です。 を呼び出す前に メソッドを呼び出ConnectSendToremoteEPした場合、 パラメーターは、その送信操作に対してのみ指定された既定のリモート ホストをオーバーライドします。 また、基になるサービス プロバイダーによって最も適切なローカル ネットワーク アドレスとポート番号が割り当てられるため、 メソッドを呼び出す Bind 必要はありません。 割り当てられたローカル ネットワーク アドレスとポート番号を識別する必要がある場合は、 メソッドが正常に完了した後に LocalEndPoint プロパティを SendTo 使用できます。

コネクションレス プロトコルを対象としていますが、 SendTo 接続指向プロトコルでも機能します。 接続指向プロトコルを使用している場合は、まず メソッドを呼び出してリモート ホスト接続を確立するか、 メソッドを Connect 使用して Accept 受信接続要求を受け入れる必要があります。 リモート ホスト接続を確立または受け入れなかった場合、 SendTo は を SocketExceptionスローします。 メソッドを呼び出す前に、コネクションレス プロトコルの既定のリモート ホストを SendTo 確立することもできます。 どちらの場合も、 SendTo は パラメーターを remoteEP 無視し、接続されているリモート ホストまたは既定のリモート ホストにのみデータを送信します。

ブロッキング ソケットは、 内のすべてのバイト buffer が要求されるまでブロックされます。 非ブロッキング Socket はすぐに完了するため、 内 bufferのすべてのバイトが送信されない場合があります。 送信されたバイト数を追跡し、アプリケーションが 内のすべてのバイト bufferを送信するまで操作を再試行するのは、アプリケーションの責任です。 送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を向上させるために、基になるシステムは、大量の送信データが収集されるまで送信を遅らせる可能性があります。 メソッドが正常に SendTo 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

ブロッキング モードでコネクションレス プロトコルを使用している場合、 SendTo は、データグラムが送信されるまでブロックします。 ブロードキャスト アドレスにデータを送信する場合は、まず メソッドを SetSocketOption 呼び出し、ソケット オプションを に設定する SocketOptionName.Broadcast必要があります。 また、送信されたバイト数が、基になるサービス プロバイダーの最大パケット サイズを超えないようにする必要もあります。 その場合、データグラムは送信されず、 SendToSocketExceptionスローされます。

注意

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

Note

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

こちらもご覧ください

適用対象

SendTo(Byte[], EndPoint)

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

指定したエンドポイントにデータを送信します。

public:
 int SendTo(cli::array <System::Byte> ^ buffer, System::Net::EndPoint ^ remoteEP);
public int SendTo (byte[] buffer, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), remoteEP As EndPoint) As Integer

パラメーター

buffer
Byte[]

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

remoteEP
EndPoint

データの送信先を表す EndPoint

戻り値

送信されたバイト数。

例外

buffernullです。

または

remoteEPnullです。

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

Socket が閉じられました。

次のコード例では、指定したリモート ホストにコネクションレス データグラムを送信します。

static void SendTo1()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, endPoint );
   s->Close();
}
public static void SendTo1()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, endPoint);
    s.Close();
}
Public Shared Sub SendTo1() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, endPoint)
    s.Close()

End Sub

注釈

このオーバーロードでは、バッファー オフセットの既定値は 0、送信するバイト数の既定値は パラメーターの buffer サイズ、 SocketFlags 値の既定値は 0 です。

コネクションレス プロトコルを使用している場合は、 を呼び出すSendTo前に、 メソッドを使用して既定のConnectリモート ホストを確立する必要はありません。 これは、 メソッドを呼び出 Send す場合にのみ必要です。 を呼び出す前に メソッドを呼び出ConnectSendToremoteEPした場合、 パラメーターは、その送信操作に対してのみ指定された既定のリモート ホストをオーバーライドします。 また、基になるサービス プロバイダーによって最も適切なローカル ネットワーク アドレスとポート番号が割り当てられるため、 メソッドを呼び出す Bind 必要はありません。 割り当てられたローカル ネットワーク アドレスとポート番号を識別する必要がある場合は、 メソッドが正常に完了した後に LocalEndPoint プロパティを SendTo 使用できます。

コネクションレス プロトコルを対象としていますが、 SendTo 接続指向プロトコルでも機能します。 接続指向プロトコルを使用している場合は、まず メソッドを呼び出してリモート ホスト接続を確立するか、 メソッドを Connect 使用して Accept 受信接続要求を受け入れる必要があります。 リモート ホスト接続を確立または受け入れなかった場合、 SendTo は を SocketExceptionスローします。 メソッドを呼び出す前に、コネクションレス プロトコルの既定のリモート ホストを SendTo 確立することもできます。 どちらの場合も、 SendTo は パラメーターを remoteEP 無視し、接続されているリモート ホストまたは既定のリモート ホストにのみデータを送信します。

ブロッキング ソケットは、バッファー内のすべてのバイトが送信されるまでブロックされます。 非ブロッキング Socket はすぐに完了するため、 内 bufferのすべてのバイトが送信されない場合があります。 送信されたバイト数を追跡し、アプリケーションが 内のすべてのバイト bufferを送信するまで操作を再試行するのは、アプリケーションの責任です。 送信したデータがネットワークにすぐに表示される保証もありません。 ネットワーク効率を高めるために、基になるシステムは、大量の送信データが収集されるまで送信を遅らせる場合があります。 メソッドが正常に SendTo 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

ブロッキング モードでコネクションレス プロトコルを使用している場合、 SendTo は、データグラムが送信されるまでブロックします。 ブロードキャスト アドレスにデータを送信する場合は、まず メソッドを SetSocketOption 呼び出し、ソケット オプションを に設定する SocketOptionName.Broadcast必要があります。 また、送信されたバイト数が、基になるサービス プロバイダーの最大パケット サイズを超えないようにする必要もあります。 その場合、データグラムは送信されず、 SendToSocketExceptionスローされます。

注意

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

Note

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

こちらもご覧ください

適用対象

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

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

指定した SocketFlags を使用して、特定のエンドポイントにデータを送信します。

public:
 int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint) As Integer

パラメーター

buffer
ReadOnlySpan<Byte>

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

socketFlags
SocketFlags

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

remoteEP
EndPoint

データの送信先を表す EndPoint

戻り値

送信されたバイト数。

例外

remoteEPnullです。

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

Socket が閉じられました。

適用対象