socket_sendtoとは? わかりやすく解説

Weblio 辞書 > コンピュータ > PHP関数リファレンス > socket_sendtoの意味・解説 

socket_sendto

(PHP 4 >= 4.0.7, PHP 5)
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)

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

名前空間: System.Net.Sockets
アセンブリ: 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)
public int SendTo (
    byte[] buffer,
    SocketFlags socketFlags,
    EndPoint remoteEP
)
public:
int SendTo (
    array<unsigned char>^ buffer, 
    SocketFlags socketFlags, 
    EndPoint^ remoteEP
)
public int SendTo (
    byte[] buffer, 
    SocketFlags socketFlags, 
    EndPoint remoteEP
)
public function SendTo (
    buffer : byte[], 
    socketFlags : SocketFlags, 
    remoteEP : EndPoint
) : int

パラメータ

buffer

送信するデータを格納する Byte 型の配列。

socketFlags

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

remoteEP

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

戻り値
送信されたバイト数。

例外例外
例外の種類条件

ArgumentNullException

buffer が null 参照 (Visual Basic では Nothing) です。

または

remoteEP が null 参照 (Visual Basic では Nothing) です。

SocketException

ソケットへのアクセスを試みているときにエラーが発生しました。詳細については「解説」を参照してください。

ObjectDisposedException

Socket は閉じられています。

解説解説

このオーバーロードでは、バッファのオフセットの既定値は 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
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Socket クラス
Socket メンバ
System.Net.Sockets 名前空間
Connect
Bind
Send
SendTo
SetSocketOption
LocalEndPoint

Socket.SendTo メソッド (Byte[], Int32, Int32, SocketFlags, EndPoint)

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

名前空間: System.Net.Sockets
アセンブリ: 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

パラメータ

buffer

送信するデータを格納する Byte 型の配列。

offset

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

size

送信するバイト数。

socketFlags

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

remoteEP

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

戻り値
送信されたバイト数。

例外例外
例外の種類条件

ArgumentNullException

buffer が null 参照 (Visual Basic では Nothing) です。

または

remoteEP が null 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

offset が 0 未満です。

または

offset が buffer の長さを超えています。

または

size が 0 未満です。

または

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

SocketException

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

または

Socket にアクセス中にオペレーティング システム エラーが発生しました。詳細については「解説」を参照してください。

ObjectDisposedException

Socket は閉じられています。

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
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Socket クラス
Socket メンバ
System.Net.Sockets 名前空間
Connect
Bind
Send
SendTo
SetSocketOption
LocalEndPoint

Socket.SendTo メソッド (Byte[], EndPoint)

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

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

Public Function SendTo ( _
    buffer As Byte(), _
    remoteEP As EndPoint _
) As Integer
public int SendTo (
    byte[] buffer,
    EndPoint remoteEP
)
public:
int SendTo (
    array<unsigned char>^ buffer, 
    EndPoint^ remoteEP
)
public int SendTo (
    byte[] buffer, 
    EndPoint remoteEP
)
public function SendTo (
    buffer : byte[], 
    remoteEP : EndPoint
) : int

パラメータ

buffer

送信するデータを格納する Byte 型の配列。

remoteEP

データの送信先を表す EndPoint。

戻り値
送信されたバイト数。

例外例外
例外の種類条件

ArgumentNullException

buffer が null 参照 (Visual Basic では Nothing) です。

または

remoteEP が null 参照 (Visual Basic では Nothing) です。

SocketException

ソケットへのアクセスを試みているときにエラーが発生しました。詳細については「解説」を参照してください。

ObjectDisposedException

Socket は閉じられています。

解説解説

このオーバーロードでは、バッファのオフセットの既定値は 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
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Socket クラス
Socket メンバ
System.Net.Sockets 名前空間
Connect
Bind
Send
SendTo
SetSocketOption
LocalEndPoint

Socket.SendTo メソッド


Socket.SendTo メソッド (Byte[], Int32, SocketFlags, EndPoint)

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

名前空間: System.Net.Sockets
アセンブリ: 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 (
    byte[] buffer,
    int size,
    SocketFlags socketFlags,
    EndPoint remoteEP
)
public:
int SendTo (
    array<unsigned char>^ buffer, 
    int size, 
    SocketFlags socketFlags, 
    EndPoint^ remoteEP
)
public int SendTo (
    byte[] buffer, 
    int size, 
    SocketFlags socketFlags, 
    EndPoint remoteEP
)
public function SendTo (
    buffer : byte[], 
    size : int, 
    socketFlags : SocketFlags, 
    remoteEP : EndPoint
) : int

パラメータ

buffer

送信するデータを格納する Byte 型の配列。

size

送信するバイト数。

socketFlags

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

remoteEP

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

戻り値
送信されたバイト数。

例外例外
例外の種類条件

ArgumentNullException

buffer が null 参照 (Visual Basic では Nothing) です。

または

remoteEP が null 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

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

SocketException

ソケットへのアクセスを試みているときにエラーが発生しました。詳細については「解説」を参照してください。

ObjectDisposedException

Socket は閉じられています。

解説解説

このオーバーロードでは、バッファのオフセットの既定値は 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
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Socket クラス
Socket メンバ
System.Net.Sockets 名前空間
Connect
Bind
Send
SendTo
SetSocketOption
LocalEndPoint


英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「socket_sendto」の関連用語

socket_sendtoのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



socket_sendtoのページの著作権

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2026 by the PHP Documentation Group.
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS