Socket.SendTo Socket.SendTo Socket.SendTo Socket.SendTo Method

定義

データを特定のエンドポイントに送信します。Sends data to a specific endpoint.

オーバーロード

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

指定したエンドポイントにデータを送信します。Sends data to the specified endpoint.

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

指定した SocketFlags を使用して、特定のエンドポイントにデータを送信します。Sends data to a specific endpoint using the specified SocketFlags.

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

指定した SocketFlags を使用し、指定したバイト数のデータを、指定したエンドポイントに送信します。Sends the specified number of bytes of data to the specified endpoint using the specified SocketFlags.

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

指定した SocketFlags を使用し、指定したバイト数のデータを、指定したエンドポイントに送信します。送信はバッファー内の指定した位置から開始されます。Sends the specified number of bytes of data to the specified endpoint, starting at the specified location in the buffer, and using the specified SocketFlags.

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

指定したエンドポイントにデータを送信します。Sends data to the specified endpoint.

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 型の配列。An array of type Byte that contains the data to be sent.

remoteEP
EndPoint EndPoint EndPoint EndPoint

データの送信先を表す EndPointThe EndPoint that represents the destination for the data.

戻り値

送信されたバイト数。The number of bytes sent.

例外

buffernullです。buffer is null.

- または --or- remoteEPnullです。remoteEP is null.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

次のコード例では、指定したリモートホストにコネクションレスのデータグラムを送信します。The following code example sends a connectionless datagram to the specified remote host.

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 'SendTo1

注釈

このオーバーロードでは、バッファーオフセットは既定で0に設定され、既定で送信されるバイト数bufferはパラメーターのサイズSocketFlagsに設定され、既定値は0に設定されます。In this overload, the buffer offset defaults to 0, the number of bytes to send defaults to the size of the buffer parameter, and the SocketFlags value defaults to 0.

コネクションレスプロトコルを使用している場合は、を呼び出すConnect SendTo前に、メソッドを使用して既定のリモートホストを確立する必要はありません。If you are using a connectionless protocol, you do not need to establish a default remote host with the Connect method prior to calling SendTo. この操作は、 Sendメソッドを呼び出す場合にのみ必要です。You only need to do this if you intend to call the Send method. を呼び出すConnect SendTo前にメソッドを呼び出すと、 remoteEPその送信操作に対してのみ、指定した既定のリモートホストがパラメーターによってオーバーライドされます。If you do call the Connect method prior to calling SendTo, the remoteEP parameter will override the specified default remote host for that send operation only. 基になるサービスプロバイダーによってBind最も適切なローカルネットワークアドレスとポート番号が割り当てられるため、メソッドを呼び出す必要もありません。You are also not required to call the Bind method, because the underlying service provider will assign the most appropriate local network address and port number. 割り当てられたローカルネットワークアドレスとポート番号を識別する必要がある場合はLocalEndPointSendToメソッドが正常に完了した後でプロパティを使用できます。If you need to identify the assigned local network address and port number, you can use the LocalEndPoint property after the SendTo method successfully completes.

コネクションレスプロトコルを対象とSendToしていますが、接続指向プロトコルでも機能します。Although intended for connectionless protocols, SendTo also works with connection-oriented protocols. 接続指向プロトコルを使用している場合は、最初にConnectメソッドを呼び出すか、 Acceptメソッドを使用して受信接続要求を受け入れることによって、リモートホスト接続を確立する必要があります。If you are using a connection-oriented protocol, you must first establish a remote host connection by calling the Connect method or accept an incoming connection request using the Accept method. リモートホスト接続を確立していない場合、 SendToまたは受け入れない場合は、によってがSocketExceptionスローされます。If you do not establish or accept a remote host connection, SendTo will throw a SocketException. また、 SendToメソッドを呼び出す前に、コネクションレスプロトコルの既定のリモートホストを確立することもできます。You can also establish a default remote host for a connectionless protocol prior to calling the SendTo method. どちらの場合も、 SendToremoteEPパラメーターを無視し、接続されたまたは既定のリモートホストにのみデータを送信します。In either of these cases, SendTo will ignore the remoteEP parameter and only send data to the connected or default remote host.

ブロックソケットは、バッファー内のすべてのバイトが送信されるまでブロックされます。Blocking sockets will block until the all of the bytes in the buffer are sent. 非ブロッキングSocketはすぐには完了しないため、 buffer内のすべてのバイトが送信されるとは限りません。Since a nonblocking Socket completes immediately, it might not send all of the bytes in the buffer. 送信されるバイト数を追跡し、アプリケーションが内bufferのすべてのバイトを送信するまで操作を再試行するのは、アプリケーションの役割です。It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends all of the bytes in the buffer. また、送信したデータがネットワークに直ちに表示される保証もありません。There is also no guarantee that the data you send will appear on the network immediately. ネットワークの効率を向上させるために、基になるシステムは、大量の送信データが収集されるまで転送を遅らせます。To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. SendToメソッドが正常に終了するということは、基になるシステムにネットワーク送信用のデータをバッファーするための余裕があることを意味します。A successful completion of the SendTo method means that the underlying system has had room to buffer your data for a network send.

ブロックモードでコネクションレスプロトコルを使用しているSendTo場合、はデータグラムが送信されるまでブロックします。If you are using a connectionless protocol in blocking mode, SendTo will block until the datagram is sent. ブロードキャストアドレスにデータを送信する場合は、最初にSetSocketOptionメソッドを呼び出し、ソケットオプションをにSocketOptionName.Broadcast設定する必要があります。If you want to send data to a broadcast address, you must first call the SetSocketOption method and set the socket option to SocketOptionName.Broadcast. また、送信されたバイト数が、基になるサービスプロバイダーの最大パケットサイズを超えていないことを確認する必要があります。You must also be sure that the number of bytes sent does not exceed the maximum packet size of the underlying service provider. この場合、データグラムは送信SendToされず、がSocketExceptionスローされます。If it does, the datagram will not be sent and SendTo will throw a SocketException.

注意

SocketException受け取った場合は、 SocketException.ErrorCodeプロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

こちらもご覧ください

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

指定した SocketFlags を使用して、特定のエンドポイントにデータを送信します。Sends data to a specific endpoint using the specified 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

パラメーター

buffer
Byte[]

送信されるデータを含む Byte 型の配列。An array of type Byte that contains the data to be sent.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

SocketFlags 値のビットごとの組み合わせ。A bitwise combination of the SocketFlags values.

remoteEP
EndPoint EndPoint EndPoint EndPoint

データの送信先の位置を表す EndPointThe EndPoint that represents the destination location for the data.

戻り値

送信されたバイト数。The number of bytes sent.

例外

buffernullです。buffer is null.

- または --or- remoteEPnullです。remoteEP is null.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

次のコード例では、指定したリモートホストにコネクションレスのデータグラムを送信します。The following code example sends a connectionless datagram to the specified remote host. SocketFlagsは、 SendToメソッドに渡されます。SocketFlags are passed to the SendTo method.

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 'SendTo2

注釈

このオーバーロードでは、バッファーオフセットは既定で0に設定され、送信するバイト数は既定でのbufferサイズに設定されます。In this overload, the buffer offset defaults to 0, and the number of bytes to send defaults to the size of the buffer. パラメーターとしてDontRouteフラグを指定した場合、送信するデータはルーティングされません。 socketflagsIf you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

コネクションレスプロトコルを使用している場合は、を呼び出すConnect SendTo前に、メソッドを使用して既定のリモートホストを確立する必要はありません。If you are using a connectionless protocol, you do not need to establish a default remote host with the Connect method prior to calling SendTo. この操作は、 Sendメソッドを呼び出す場合にのみ必要です。You only need to do this if you intend to call the Send method. を呼び出すConnect SendTo前にメソッドを呼び出すと、 remoteEPその送信操作に対してのみ、指定した既定のリモートホストがパラメーターによってオーバーライドされます。If you do call the Connect method prior to calling SendTo, the remoteEP parameter will override the specified default remote host for that send operation only. 基になるサービスプロバイダーによってBind最も適切なローカルネットワークアドレスとポート番号が割り当てられるため、メソッドを呼び出す必要もありません。You are also not required to call the Bind method, because the underlying service provider will assign the most appropriate local network address and port number. 割り当てられたローカルネットワークアドレスとポート番号を識別する必要がある場合はLocalEndPointSendToメソッドが正常に完了した後でプロパティを使用できます。If you need to identify the assigned local network address and port number, you can use the LocalEndPoint property after the SendTo method successfully completes.

コネクションレスプロトコルを対象とSendToしていますが、接続指向プロトコルでも機能します。Although intended for connectionless protocols, SendTo also works with connection-oriented protocols. 接続指向プロトコルを使用している場合は、最初にConnectメソッドを呼び出すか、 Acceptメソッドを使用して受信接続要求を受け入れることによって、リモートホスト接続を確立する必要があります。If you are using a connection-oriented protocol, you must first establish a remote host connection by calling the Connect method or accept an incoming connection request using the Accept method. リモートホスト接続を確立していない場合、 SendToまたは受け入れない場合は、によってがSocketExceptionスローされます。If you do not establish or accept a remote host connection, SendTo will throw a SocketException. また、 SendToメソッドを呼び出す前に、コネクションレスプロトコルの既定のリモートホストを確立することもできます。You can also establish a default remote host for a connectionless protocol prior to calling the SendTo method. どちらの場合も、 SendToremoteEPパラメーターを無視し、接続されたまたは既定のリモートホストにのみデータを送信します。In either of these cases, SendTo will ignore the remoteEP parameter and only send data to the connected or default remote host.

ブロックされたソケットは、でbuffer要求されたすべてのバイトが送信されるまでブロックされます。Blocking sockets will block until the requested all of the bytes in the buffer are sent. 非ブロッキングSocketはすぐには完了しないため、 buffer内のすべてのバイトが送信されるとは限りません。Since a nonblocking Socket completes immediately, it might not send all of the bytes in the buffer. 送信されるバイト数を追跡し、アプリケーションが内bufferのすべてのバイトを送信するまで操作を再試行するのは、アプリケーションの役割です。It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends all of the bytes in the buffer. また、送信したデータがネットワークに直ちに表示される保証もありません。There is also no guarantee that the data you send will appear on the network immediately. ネットワークの効率を高めるため、基になるシステムは、大量のデータが収集されるまで転送を遅らせます。To increase network efficiency, the underlying system may delay transmission until a significant amount of out-going data is collected. SendToメソッドが正常に終了するということは、基になるシステムにネットワーク送信用のデータをバッファーするための余裕があることを意味します。A successful completion of the SendTo method means that the underlying system has had room to buffer your data for a network send.

ブロックモードでコネクションレスプロトコルを使用しているSendTo場合、はデータグラムが送信されるまでブロックします。If you are using a connectionless protocol in blocking mode, SendTo will block until the datagram is sent. ブロードキャストアドレスにデータを送信する場合は、最初にSetSocketOptionメソッドを呼び出し、ソケットオプションをにSocketOptionName.Broadcast設定する必要があります。If you want to send data to a broadcast address, you must first call the SetSocketOption method and set the socket option to SocketOptionName.Broadcast. また、送信されたバイト数が、基になるサービスプロバイダーの最大パケットサイズを超えていないことを確認する必要があります。You must also be sure that the number of bytes sent does not exceed the maximum packet size of the underlying service provider. この場合、データグラムは送信SendToされず、がSocketExceptionスローされます。If it does, the datagram will not be sent and SendTo will throw a SocketException.

注意

SocketException受け取った場合は、 SocketException.ErrorCodeプロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

こちらもご覧ください

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

指定した SocketFlags を使用し、指定したバイト数のデータを、指定したエンドポイントに送信します。Sends the specified number of bytes of data to the specified endpoint using the specified 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

パラメーター

buffer
Byte[]

送信されるデータを含む Byte 型の配列。An array of type Byte that contains the data to be sent.

size
Int32 Int32 Int32 Int32

送信するバイト数。The number of bytes to send.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

SocketFlags 値のビットごとの組み合わせ。A bitwise combination of the SocketFlags values.

remoteEP
EndPoint EndPoint EndPoint EndPoint

データの送信先の位置を表す EndPointThe EndPoint that represents the destination location for the data.

戻り値

送信されたバイト数。The number of bytes sent.

例外

buffernull です。buffer is null.

- または --or- remoteEPnull です。remoteEP is null.

指定した sizebuffer のサイズを超えています。The specified size exceeds the size of buffer.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

次のコード例では、指定したリモートホストにコネクションレスのデータグラムを送信します。The following code example sends a connectionless datagram to the specified remote host. サイズとSocketFlagsは、 SendToメソッドに渡されます。The size and SocketFlags are passed to the SendTo method.

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 'SendTo3

注釈

このオーバーロードでは、バッファーオフセットは既定で0に設定されます。In this overload, the buffer offset defaults to 0. パラメーターとしてDontRouteフラグを指定した場合、送信するデータはルーティングされません。 socketflagsIf you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

コネクションレスプロトコルを使用している場合は、を呼び出すConnect SendTo前に、メソッドを使用して既定のリモートホストを確立する必要はありません。If you are using a connectionless protocol, you do not need to establish a default remote host with the Connect method prior to calling SendTo. この操作は、 Sendメソッドを呼び出す場合にのみ必要です。You only need to do this if you intend to call the Send method. を呼び出すConnect SendTo前にメソッドを呼び出すと、 remoteEPその送信操作に対してのみ、指定した既定のリモートホストがパラメーターによってオーバーライドされます。If you do call the Connect method prior to calling SendTo, the remoteEP parameter will override the specified default remote host for that send operation only. 基になるサービスプロバイダーによってBind最も適切なローカルネットワークアドレスとポート番号が割り当てられるため、メソッドを呼び出す必要もありません。You are also not required to call the Bind method, because the underlying service provider will assign the most appropriate local network address and port number. 割り当てられたローカルネットワークアドレスとポート番号を識別する必要がある場合はLocalEndPointSendToメソッドが正常に完了した後でプロパティを使用できます。If you need to identify the assigned local network address and port number, you can use the LocalEndPoint property after the SendTo method successfully completes.

コネクションレスプロトコルを対象とSendToしていますが、接続指向プロトコルでも機能します。Although intended for connectionless protocols, SendTo also works with connection-oriented protocols. 接続指向プロトコルを使用している場合は、最初にConnectメソッドを呼び出すか、 Acceptメソッドを使用して受信接続要求を受け入れることによって、リモートホスト接続を確立する必要があります。If you are using a connection-oriented protocol, you must first establish a remote host connection by calling the Connect method or accept an incoming connection request using the Accept method. リモートホスト接続を確立していない場合、 SendToまたは受け入れない場合は、によってがSocketExceptionスローされます。If you do not establish or accept a remote host connection, SendTo will throw a SocketException. また、 SendToメソッドを呼び出す前に、コネクションレスプロトコルの既定のリモートホストを確立することもできます。You can also establish a default remote host for a connectionless protocol prior to calling the SendTo method. どちらの場合も、 SendToremoteEPパラメーターを無視し、接続されたまたは既定のリモートホストにのみデータを送信します。In either of these cases, SendTo will ignore the remoteEP parameter and only send data to the connected or default remote host.

ブロックされたソケットは、要求されたバイト数が送信されるまでブロックされます。Blocking sockets will block until the requested number of bytes are sent. 非ブロッキングSocketはすぐには完了しないため、1回の操作で要求されたバイト数がすべて送信されない可能性があります。Since a nonblocking Socket completes immediately, it might not send all of the bytes requested in a single operation. アプリケーションは、送信されたバイト数を追跡し、要求されたバイト数をアプリケーションが送信するまで操作を再試行する必要があります。It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the requested number of bytes. また、送信したデータがネットワークに直ちに表示される保証もありません。There is also no guarantee that the data you send will appear on the network immediately. ネットワークの効率を高めるため、基になるシステムは、大量のデータが収集されるまで転送を遅らせます。To increase network efficiency, the underlying system may delay transmission until a significant amount of out-going data is collected. SendToメソッドが正常に終了するということは、基になるシステムにネットワーク送信用のデータをバッファーするための余裕があることを意味します。A successful completion of the SendTo method means that the underlying system has had room to buffer your data for a network send.

ブロックモードでコネクションレスプロトコルを使用しているSendTo場合、はデータグラムが送信されるまでブロックします。If you are using a connectionless protocol in blocking mode, SendTo will block until the datagram is sent. ブロードキャストアドレスにデータを送信する場合は、最初にSetSocketOptionメソッドを呼び出し、ソケットオプションをにSocketOptionName.Broadcast設定する必要があります。If you want to send data to a broadcast address, you must first call the SetSocketOption method and set the socket option to SocketOptionName.Broadcast. また、送信されたバイト数が、基になるサービスプロバイダーの最大パケットサイズを超えていないことを確認する必要があります。You must also be sure that the number of bytes sent does not exceed the maximum packet size of the underlying service provider. この場合、データグラムは送信SendToされず、がSocketExceptionスローされます。If it does, the datagram will not be sent and SendTo will throw a SocketException.

注意

SocketException受け取った場合は、 SocketException.ErrorCodeプロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

こちらもご覧ください

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

指定した SocketFlags を使用し、指定したバイト数のデータを、指定したエンドポイントに送信します。送信はバッファー内の指定した位置から開始されます。Sends the specified number of bytes of data to the specified endpoint, starting at the specified location in the buffer, and using the specified 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

パラメーター

buffer
Byte[]

送信されるデータを含む Byte 型の配列。An array of type Byte that contains the data to be sent.

offset
Int32 Int32 Int32 Int32

データの送信を開始する、データ バッファー内の位置。The position in the data buffer at which to begin sending data.

size
Int32 Int32 Int32 Int32

送信するバイト数。The number of bytes to send.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

SocketFlags 値のビットごとの組み合わせ。A bitwise combination of the SocketFlags values.

remoteEP
EndPoint EndPoint EndPoint EndPoint

データの送信先の位置を表す EndPointThe EndPoint that represents the destination location for the data.

戻り値

送信されたバイト数。The number of bytes sent.

例外

buffernull です。buffer is null.

- または --or- remoteEPnullです。remoteEP is null.

offset が 0 未満です。offset is less than 0.

- または --or- offsetbuffer の長さを超えています。offset is greater than the length of buffer.

または-or- size が 0 未満です。size is less than 0.

または-or- size が、buffer の長さから offset パラメーターの値を引いた値を超えています。size is greater than the length of buffer minus the value of the offset parameter.

socketFlags は、値の有効な組み合わせではありません。socketFlags is not a valid combination of values.

- または --or- Socket にアクセス中にオペレーティング システム エラーが発生しました。An operating system error occurs while accessing the Socket.

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。A caller in the call stack does not have the required permissions.

次のコード例では、指定したリモートホストにコネクションレスのデータグラムを送信します。The following code example sends a connectionless datagram to the specified remote host. オフセット、サイズ、およびSocketFlagsSendToメソッドに渡されます。The offset, size, and SocketFlags are passed to the SendTo method.

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 'SendTo4


注釈

このオーバーロードでは、 DontRoute socketflagsパラメーターとしてフラグを指定すると、送信するデータはルーティングされません。In this overload, if you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

コネクションレスプロトコルを使用している場合は、を呼び出すConnect SendTo前に、メソッドを使用して既定のリモートホストを確立する必要はありません。If you are using a connectionless protocol, you do not need to establish a default remote host with the Connect method prior to calling SendTo. この操作は、 Sendメソッドを呼び出す場合にのみ必要です。You only need to do this if you intend to call the Send method. を呼び出すConnect SendTo前にメソッドを呼び出すと、 remoteEPその送信操作に対してのみ、指定した既定のリモートホストがパラメーターによってオーバーライドされます。If you do call the Connect method prior to calling SendTo, the remoteEP parameter will override the specified default remote host for that send operation only. 基になるサービスプロバイダーによってBind最も適切なローカルネットワークアドレスとポート番号が割り当てられるため、メソッドを呼び出す必要もありません。You are also not required to call the Bind method, because the underlying service provider will assign the most appropriate local network address and port number. 割り当てられたローカルネットワークアドレスとポート番号を識別する必要がある場合はLocalEndPointSendToメソッドが正常に完了した後でプロパティを使用できます。If you need to identify the assigned local network address and port number, you can use the LocalEndPoint property after the SendTo method successfully completes.

コネクションレスプロトコルを対象とSendToしていますが、接続指向プロトコルでも機能します。Although intended for connectionless protocols, SendTo also works with connection-oriented protocols. 接続指向プロトコルを使用している場合は、最初にConnectメソッドを呼び出すか、 Acceptメソッドを使用して受信接続要求を受け入れることによって、リモートホスト接続を確立する必要があります。If you are using a connection-oriented protocol, you must first establish a remote host connection by calling the Connect method or accept an incoming connection request using the Accept method. リモートホスト接続を確立していない場合、 SendToまたは受け入れない場合は、によってがSocketExceptionスローされます。If you do not establish or accept a remote host connection, SendTo will throw a SocketException. また、 SendToメソッドを呼び出す前に、コネクションレスプロトコルの既定のリモートホストを確立することもできます。You can also establish a default remote host for a connectionless protocol prior to calling the SendTo method. どちらの場合も、 SendToremoteEPパラメーターを無視し、接続されたまたは既定のリモートホストにのみデータを送信します。In either of these cases, SendTo will ignore the remoteEP parameter and only send data to the connected or default remote host.

ブロックされたソケットは、要求されたバイト数が送信されるまでブロックされます。Blocking sockets will block until the requested number of bytes are sent. 非ブロッキングSocketはすぐに完了するため、1回の操作で要求されたバイト数がすべて送信されるとは限りません。Since a non-blocking Socket completes immediately, it might not send all of the bytes requested in a single operation. アプリケーションは、送信されたバイト数を追跡し、要求されたバイト数をアプリケーションが送信するまで操作を再試行する必要があります。It is your applications responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the requested number of bytes. また、送信したデータがネットワークに直ちに表示される保証もありません。There is also no guarantee that the data you send will appear on the network immediately. ネットワークの効率を高めるため、基になるシステムは、大量のデータが収集されるまで転送を遅らせます。To increase network efficiency, the underlying system may delay transmission until a significant amount of out-going data is collected. SendToメソッドが正常に終了するということは、基になるシステムにネットワーク送信用のデータをバッファーするための余裕があることを意味します。A successful completion of the SendTo method means that the underlying system has had room to buffer your data for a network send.

ブロックモードでコネクションレスプロトコルを使用しているSendTo場合、はデータグラムが送信されるまでブロックします。If you are using a connectionless protocol in blocking mode, SendTo will block until the datagram is sent. ブロードキャストアドレスにデータを送信する場合は、最初にSetSocketOptionメソッドを呼び出し、ソケットオプションをにSocketOptionName.Broadcast設定する必要があります。If you want to send data to a broadcast address, you must first call the SetSocketOption method and set the socket option to SocketOptionName.Broadcast. また、サイズが基になるサービスプロバイダーの最大パケットサイズを超えていないことを確認する必要もあります。You must also be sure that the size does not exceed the maximum packet size of the underlying service provider. この場合、データグラムは送信SendToされず、がSocketExceptionスローされます。If it does, the datagram will not be sent and SendTo will throw a SocketException.

注意

SocketException受け取った場合は、 SocketException.ErrorCodeプロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

こちらもご覧ください

適用対象