socket_sendto
socket_sendto — 接続しているかどうかによらずソケットにメッセージを送信する
説明
int socket_sendto ( resource socket, string buf, int len, int flags, string addr [, int port] )関数 socket_sendto() は、 アドレス addr の port を使用し、 buf からソケット socket に len バイトのデータを送信します。
flags は、以下のうちのひとつです。 表 289. flags がとりうる値
0x1 | OOB(out-of-band: 帯域外)データを処理します。 |
0x2 | やってくるメッセージを受け取ります。 |
0x4 | ルータを使用せず、直接つながっているインターフェースのみを 使用します。 |
0x8 | レコードでデータがそろいます。 |
0x100 | トランザクションでデータがそろいます。 |
例 2155. socket_sendto() の例
<?php
$sh = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (socket_bind($sh, '127.0.0.1', 4242)) {
echo "ソケットを正しくバインドしました。";
}
$buf = 'Test Message';
$len = strlen($buf);
if (socket_sendto($sh, $buf, $len, 0x100, '192.168.0.2', 4242) !== false) {
echo "メッセージが正しく送信されました。";
}
socket_close($sh);
?>
socket_send() および socket_sendmsg() も参照ください。
Socket.SendTo メソッド (Byte[], SocketFlags, EndPoint)
アセンブリ: System (system.dll 内)

Public Function SendTo ( _ buffer As Byte(), _ socketFlags As SocketFlags, _ remoteEP As EndPoint _ ) As Integer
Dim instance As Socket Dim buffer As Byte() Dim socketFlags As SocketFlags Dim remoteEP As EndPoint Dim returnValue As Integer returnValue = instance.SendTo(buffer, socketFlags, remoteEP)
戻り値
送信されたバイト数。


このオーバーロードでは、バッファのオフセットの既定値は 0 であり、送信するデータのバイト数の既定値は buffer のサイズです。DontRoute フラグを socketflags パラメータとして指定した場合、送信しようとしているデータはルーティングされません。
コネクションレスのプロトコルを使用している場合は、SendTo を呼び出す前に Connect メソッドで既定のリモート ホストを確立する必要がありません。これは、Send メソッドを呼び出す場合にだけ必要です。SendTo を呼び出す前に Connect を呼び出した場合、remoteEP パラメータはその送信操作でだけ指定した既定のリモート ホストをオーバーライドします。また、Bind メソッドを呼び出す必要はありません。基になるサービス プロバイダが最も適切なローカル ネットワーク アドレスとポート番号を割り当てるためです。割り当てられたローカル ネットワーク アドレスおよびポート番号を特定する必要がある場合は、SendTo メソッドが正常に終了した後に LocalEndPoint プロパティを使用できます。
SendTo は、コネクションレスのプロトコルを想定していますが、コネクション指向のプロトコルでも使用できます。コネクション指向のプロトコルを使用する場合は、Connect を呼び出してリモート ホストとの接続を確立するか、Accept を使用して受信接続を受け入れる必要があります。リモート ホストとの接続を確立していないか、受け入れていない場合は、SendTo が SocketException をスローします。また、SendTo を呼び出す前に、コネクションレス プロトコルで既定のリモート ホストを確立することもできます。いずれの場合も、SendTo は remoteEP パラメータを無視し、接続されているリモート ホストまたは既定のリモート ホストにだけデータを送信します。
ブロッキング ソケットは、buffer 内の要求されたすべてのバイトが送信されるまでブロックします。非ブロッキング Socket はすぐに完了するため、buffer 内のバイトの一部が送信されない可能性があります。送信されたバイト数を監視し、buffer 内のバイト数をすべて送信するまで操作を再試行することは、アプリケーション側の責任です。また、送信したデータがすぐにネットワーク上に現れることは保証されません。ネットワークの効率を高めるため、基になっているシステムは、十分な量の送信データが収集されるまで送信を遅延することがあります。SendTo メソッドが正常に完了した場合は、基になるシステムにネットワーク送信のためにデータをバッファする余地があったことを示します。
コネクションレスのプロトコルをブロッキング モードで使用している場合、SendTo はデータグラムが送信されるまでブロックします。データをブロードキャスト アドレスに送信する場合は、最初に SetSocketOption メソッドを呼び出し、ソケット オプションを SocketOptionName.Broadcast に設定する必要があります。また、送信するバイト数が、基になるサービス プロバイダの最大パケット サイズを超えないことを確認する必要があります。最大サイズを超えている場合、データグラムは送信されず、SendTo は 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 は、SendTo メソッドに渡されます。
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
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(); }
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.Resolve(Dns.GetHostName()); IPEndPoint endPoint = new IPEndPoint(hostEntry.get_AddressList()[0], 11000); Socket s = new Socket(endPoint.get_Address().get_AddressFamily() , SocketType.Dgram, ProtocolType.Udp); ubyte msg[] = Encoding.get_ASCII().GetBytes("This is a test"); Console.WriteLine("Sending data."); // This call blocks. s.SendTo(msg, SocketFlags.None, endPoint); s.Close(); } //SendTo2

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.SendTo メソッド (Byte[], Int32, Int32, SocketFlags, EndPoint)
アセンブリ: System (system.dll 内)

Public Function SendTo ( _ buffer As Byte(), _ offset As Integer, _ size As Integer, _ socketFlags As SocketFlags, _ remoteEP As EndPoint _ ) As Integer
Dim instance As Socket Dim buffer As Byte() Dim offset As Integer Dim size As Integer Dim socketFlags As SocketFlags Dim remoteEP As EndPoint Dim returnValue As Integer returnValue = instance.SendTo(buffer, offset, size, socketFlags, remoteEP)
public int SendTo ( byte[] buffer, int offset, int size, SocketFlags socketFlags, EndPoint remoteEP )
public: int SendTo ( array<unsigned char>^ buffer, int offset, int size, SocketFlags socketFlags, EndPoint^ remoteEP )
public int SendTo ( byte[] buffer, int offset, int size, SocketFlags socketFlags, EndPoint remoteEP )
public function SendTo ( buffer : byte[], offset : int, size : int, socketFlags : SocketFlags, remoteEP : EndPoint ) : int
戻り値
送信されたバイト数。

例外の種類 | 条件 |
---|---|
ArgumentNullException | buffer が null 参照 (Visual Basic では Nothing) です。 または remoteEP が null 参照 (Visual Basic では Nothing) です。 |
ArgumentOutOfRangeException | または または または |
SocketException | socketFlags が、値の有効な組み合わせではありません。 または Socket にアクセス中にオペレーティング システム エラーが発生しました。詳細については「解説」を参照してください。 |
ObjectDisposedException | |
SecurityException | コール スタック内の呼び出し元が、要求されたアクセス許可を保持していません。 |

このオーバーロードで、DontRoute フラグを socketflags パラメータとして指定した場合、送信しようとしているデータはルーティングされません。
コネクションレスのプロトコルを使用している場合は、SendTo を呼び出す前に Connect メソッドで既定のリモート ホストを確立する必要がありません。これは、Send メソッドを呼び出す場合にだけ必要です。SendTo を呼び出す前に Connect を呼び出した場合、remoteEP パラメータはその送信操作でだけ指定した既定のリモート ホストをオーバーライドします。また、Bind メソッドを呼び出す必要はありません。基になるサービス プロバイダが最も適切なローカル ネットワーク アドレスとポート番号を割り当てるためです。割り当てられたローカル ネットワーク アドレスおよびポート番号を特定する必要がある場合は、SendTo メソッドが正常に終了した後に LocalEndPoint プロパティを使用できます。
SendTo は、コネクションレスのプロトコルを想定していますが、コネクション指向のプロトコルでも使用できます。コネクション指向のプロトコルを使用する場合は、Connect を呼び出してリモート ホストとの接続を確立するか、Accept を使用して受信接続を受け入れる必要があります。リモート ホストとの接続を確立していないか、受け入れていない場合は、SendTo が SocketException をスローします。また、SendTo を呼び出す前に、コネクションレス プロトコルで既定のリモート ホストを確立することもできます。いずれの場合も、SendTo は remoteEP パラメータを無視し、接続されているリモート ホストまたは既定のリモート ホストにだけデータを送信します。
ブロッキング ソケットは、要求されたバイト数が送信されるまでブロックします。非ブロッキング Socket はすぐに完了するため、1 回の操作で要求されたバイトの一部が送信されない可能性があります。送信されたバイト数を監視し、要求されたバイト数をすべて送信するまで操作を再試行することは、アプリケーション側の責任です。また、送信したデータがすぐにネットワーク上に現れることは保証されません。ネットワークの効率を高めるため、基になっているシステムは、十分な量の送信データが収集されるまで送信を遅延することがあります。SendTo メソッドが正常に完了した場合は、基になるシステムにネットワーク送信のためにデータをバッファする余地があったことを示します。
コネクションレスのプロトコルをブロッキング モードで使用している場合、SendTo はデータグラムが送信されるまでブロックします。データをブロードキャスト アドレスに送信する場合は、最初に SetSocketOption メソッドを呼び出し、ソケット オプションを SocketOptionName.Broadcast に設定する必要があります。また、サイズが、基になるサービス プロバイダの最大パケット サイズを超えないことを確認する必要もあります。最大サイズを超えている場合、データグラムは送信されず、SendTo は 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 は、SendTo メソッドに渡されます。
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
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(); }
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.Resolve(Dns.GetHostName()); IPEndPoint endPoint = new IPEndPoint(hostEntry.get_AddressList()[0], 11000); Socket s = new Socket(endPoint.get_Address().get_AddressFamily() , SocketType.Dgram, ProtocolType.Udp); ubyte msg[] = Encoding.get_ASCII().GetBytes("This is a test"); Console.WriteLine("Sending data."); // This call blocks. s.SendTo(msg, 0, msg.length, SocketFlags.None, endPoint); s.Close(); } //SendTo4

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.SendTo メソッド (Byte[], EndPoint)
アセンブリ: System (system.dll 内)

Dim instance As Socket Dim buffer As Byte() Dim remoteEP As EndPoint Dim returnValue As Integer returnValue = instance.SendTo(buffer, remoteEP)
戻り値
送信されたバイト数。


このオーバーロードでは、バッファのオフセットの既定値は 0、送信するデータのバイト数の既定値は buffer パラメータのサイズであり、SocketFlags の既定値は 0 です。
コネクションレスのプロトコルを使用している場合は、SendTo を呼び出す前に Connect メソッドで既定のリモート ホストを確立する必要がありません。これは、Send メソッドを呼び出す場合にだけ必要です。SendTo を呼び出す前に Connect を呼び出した場合、remoteEP パラメータはその送信操作でだけ指定した既定のリモート ホストをオーバーライドします。また、Bind メソッドを呼び出す必要はありません。基になるサービス プロバイダが最も適切なローカル ネットワーク アドレスとポート番号を割り当てるためです。割り当てられたローカル ネットワーク アドレスおよびポート番号を特定する必要がある場合は、SendTo メソッドが正常に終了した後に LocalEndPoint プロパティを使用できます。
SendTo は、コネクションレスのプロトコルを想定していますが、コネクション指向のプロトコルでも使用できます。コネクション指向のプロトコルを使用する場合は、Connect を呼び出してリモート ホストとの接続を確立するか、Accept を使用して受信接続を受け入れる必要があります。リモート ホストとの接続を確立していないか、受け入れていない場合は、SendTo が SocketException をスローします。また、SendTo を呼び出す前に、コネクションレス プロトコルで既定のリモート ホストを確立することもできます。いずれの場合も、SendTo は remoteEP パラメータを無視し、接続されているリモート ホストまたは既定のリモート ホストにだけデータを送信します。
ブロッキング ソケットは、バッファ内のすべてのバイトが送信されるまでブロックします。非ブロッキング Socket はすぐに完了するため、buffer 内のバイトの一部が送信されない可能性があります。送信されたバイト数を監視し、buffer 内のバイト数をすべて送信するまで操作を再試行することは、アプリケーション側の責任です。また、送信したデータがすぐにネットワーク上に現れることは保証されません。ネットワークの効率を高めるため、基になっているシステムは、十分な量の送信データが収集されるまで送信を遅延することがあります。SendTo メソッドが正常に完了した場合は、基になるシステムにネットワーク送信のためにデータをバッファする余地があったことを示します。
コネクションレスのプロトコルをブロッキング モードで使用している場合、SendTo はデータグラムが送信されるまでブロックします。データをブロードキャスト アドレスに送信する場合は、最初に SetSocketOption メソッドを呼び出し、ソケット オプションを SocketOptionName.Broadcast に設定する必要があります。また、送信するバイト数が、基になるサービス プロバイダの最大パケット サイズを超えないことを確認する必要があります。最大サイズを超えている場合、データグラムは送信されず、SendTo は 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 ではなく、ネイティブ オペレーティング システムによって決まります。

指定したリモート ホストに、コネクションレスのデータグラムを送信するコード例を次に示します。
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
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(); }
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.Resolve(Dns.GetHostName()); IPEndPoint endPoint = new IPEndPoint(hostEntry.get_AddressList()[0], 11000); Socket s = new Socket(endPoint.get_Address().get_AddressFamily() , SocketType.Dgram, ProtocolType.Udp); ubyte msg[] = Encoding.get_ASCII().GetBytes("This is a test"); Console.WriteLine("Sending data."); // This call blocks. s.SendTo(msg, endPoint); s.Close(); } //SendTo1

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.SendTo メソッド

名前 | 説明 |
---|---|
Socket.SendTo (Byte[], EndPoint) | 指定したエンドポイントにデータを送信します。 .NET Compact Framework によってサポートされています。 |
Socket.SendTo (Byte[], SocketFlags, EndPoint) | 指定した SocketFlags を使用して、特定のエンドポイントにデータを送信します。 .NET Compact Framework によってサポートされています。 |
Socket.SendTo (Byte[], Int32, SocketFlags, EndPoint) | 指定した SocketFlags を使用し、指定したバイト数のデータを、指定したエンドポイントに送信します。 .NET Compact Framework によってサポートされています。 |
Socket.SendTo (Byte[], Int32, Int32, SocketFlags, EndPoint) | 指定した SocketFlags を使用し、指定したバイト数のデータを、指定したエンドポイントに送信します。送信はバッファ内の指定した位置から開始されます。 .NET Compact Framework によってサポートされています。 |

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

Public Function SendTo ( _ buffer As Byte(), _ size As Integer, _ socketFlags As SocketFlags, _ remoteEP As EndPoint _ ) As Integer
Dim instance As Socket Dim buffer As Byte() Dim size As Integer Dim socketFlags As SocketFlags Dim remoteEP As EndPoint Dim returnValue As Integer returnValue = instance.SendTo(buffer, size, socketFlags, remoteEP)
public: int SendTo ( array<unsigned char>^ buffer, int size, SocketFlags socketFlags, EndPoint^ remoteEP )
public function SendTo ( buffer : byte[], size : int, socketFlags : SocketFlags, remoteEP : EndPoint ) : int
戻り値
送信されたバイト数。


このオーバーロードでは、バッファのオフセットの既定値は 0 です。DontRoute フラグを socketflags パラメータとして指定した場合、送信しようとしているデータはルーティングされません。
コネクションレスのプロトコルを使用している場合は、SendTo を呼び出す前に Connect メソッドで既定のリモート ホストを確立する必要がありません。これは、Send メソッドを呼び出す場合にだけ必要です。SendTo を呼び出す前に Connect を呼び出した場合、remoteEP パラメータはその送信操作でだけ指定した既定のリモート ホストをオーバーライドします。また、Bind メソッドを呼び出す必要はありません。基になるサービス プロバイダが最も適切なローカル ネットワーク アドレスとポート番号を割り当てるためです。割り当てられたローカル ネットワーク アドレスおよびポート番号を特定する必要がある場合は、SendTo メソッドが正常に終了した後に LocalEndPoint プロパティを使用できます。
SendTo は、コネクションレスのプロトコルを想定していますが、コネクション指向のプロトコルでも使用できます。コネクション指向のプロトコルを使用する場合は、Connect を呼び出してリモート ホストとの接続を確立するか、Accept を使用して受信接続を受け入れる必要があります。リモート ホストとの接続を確立していないか、受け入れていない場合は、SendTo が SocketException をスローします。また、SendTo を呼び出す前に、コネクションレス プロトコルで既定のリモート ホストを確立することもできます。いずれの場合も、SendTo は remoteEP パラメータを無視し、接続されているリモート ホストまたは既定のリモート ホストにだけデータを送信します。
ブロッキング ソケットは、要求されたバイト数が送信されるまでブロックします。非ブロッキング Socket はすぐに完了するため、1 回の操作では要求されたバイトの一部が送信されない可能性があります。送信されたバイト数を監視し、要求されたバイト数をすべて送信するまで操作を再試行することは、アプリケーション側の責任です。また、送信したデータがすぐにネットワーク上に現れることは保証されません。ネットワークの効率を高めるため、基になっているシステムは、十分な量の送信データが収集されるまで送信を遅延することがあります。SendTo メソッドが正常に完了した場合は、基になるシステムにネットワーク送信のためにデータをバッファする余地があったことを示します。
コネクションレスのプロトコルをブロッキング モードで使用している場合、SendTo はデータグラムが送信されるまでブロックします。データをブロードキャスト アドレスに送信する場合は、最初に SetSocketOption メソッドを呼び出し、ソケット オプションを SocketOptionName.Broadcast に設定する必要があります。また、送信するバイト数が、基になるサービス プロバイダの最大パケット サイズを超えないことを確認する必要があります。最大サイズを超えている場合、データグラムは送信されず、SendTo は SocketException をスローします。
![]() |
---|
SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。 |

指定したリモート ホストに、コネクションレスのデータグラムを送信するコード例を次に示します。サイズと SocketFlags は SendTo メソッドに渡されます。
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
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(); }
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.Resolve(Dns.GetHostName()); IPEndPoint endPoint = new IPEndPoint(hostEntry.get_AddressList()[0], 11000); Socket s = new Socket(endPoint.get_Address().get_AddressFamily() , SocketType.Dgram, ProtocolType.Udp); ubyte msg[] = Encoding.get_ASCII().GetBytes("This is a test"); Console.WriteLine("Sending data."); // This call blocks. s.SendTo(msg, msg.length, SocketFlags.None, endPoint); s.Close(); } //SendTo3

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_sendtoのページへのリンク