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() は、 アドレス addrport を使用し、 buf からソケット socketlen バイトのデータを送信します。
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

buffernull 参照 (Visual Basic では Nothing) です。

または

remoteEPnull 参照 (Visual Basic では Nothing) です。

SocketException

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

ObjectDisposedException

Socket閉じられています。

解説解説

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

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

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

ブロッキング ソケットは、buffer 内の要求されすべてのバイト送信されるまでブロックします。非ブロッキング Socket はすぐに完了するため、buffer 内のバイト一部送信されない可能性あります送信されたバイト数を監視しbuffer 内のバイト数をすべて送信するまで操作再試行することは、アプリケーション側の責任です。また、送信したデータがすぐにネットワーク上に現れることは保証されません。ネットワーク効率高めるため、基になっているシステムは、十分な量の送信データ収集されるまで送信遅延することがありますSendTo メソッド正常に完了した場合は、基になるシステムネットワーク送信のためにデータバッファする余地があったことを示します

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

メモメモ

SocketException発生した場合は、SocketException.ErrorCode プロパティ使用して具体的なエラー コード取得してください。このコード取得したら、Windows Socket Version 2 API エラー コードドキュメントエラー詳細情報確認してください。これは MSDN ライブラリから入手できます

Windows Mobile for Pocket PCWindows Mobile for SmartphoneWindows 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

buffernull 参照 (Visual Basic では Nothing) です。

または

remoteEPnull 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

offset が 0 未満です。

または

offsetbuffer長さ超えてます。

または

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使用して受信接続受け入れる必要がありますリモート ホストとの接続確立していないか、受け入れてない場合は、SendToSocketExceptionスローます。また、SendTo呼び出す前にコネクションレス プロトコル既定リモート ホスト確立することもできますいずれの場合も、SendToremoteEP パラメータ無視し接続されているリモート ホストまたは既定リモート ホストにだけデータ送信します

ブロッキング ソケットは、要求されたバイト数が送信されるまでブロックします。非ブロッキング Socket はすぐに完了するため、1 回操作要求されたバイト一部送信されない可能性あります送信されたバイト数を監視し要求されたバイト数をすべて送信するまで操作再試行することは、アプリケーション側の責任です。また、送信したデータがすぐにネットワーク上に現れることは保証されません。ネットワーク効率高めるため、基になっているシステムは、十分な量の送信データ収集されるまで送信遅延することがありますSendTo メソッド正常に完了した場合は、基になるシステムネットワーク送信のためにデータバッファする余地があったことを示します

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

メモメモ

SocketException発生した場合は、SocketException.ErrorCode プロパティ使用して具体的なエラー コード取得してください。このコード取得したら、Windows Socket Version 2 API エラー コードドキュメントエラー詳細情報確認してください。これは MSDN ライブラリから入手できます

Windows Mobile for Pocket PCWindows Mobile for SmartphoneWindows 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

buffernull 参照 (Visual Basic では Nothing) です。

または

remoteEPnull 参照 (Visual Basic では Nothing) です。

SocketException

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

ObjectDisposedException

Socket閉じられています。

解説解説

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

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

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

ブロッキング ソケットは、バッファ内のすべてのバイト送信されるまでブロックします。非ブロッキング Socket はすぐに完了するため、buffer 内のバイト一部送信されない可能性あります送信されたバイト数を監視しbuffer 内のバイト数をすべて送信するまで操作再試行することは、アプリケーション側の責任です。また、送信したデータがすぐにネットワーク上に現れることは保証されません。ネットワーク効率高めるため、基になっているシステムは、十分な量の送信データ収集されるまで送信遅延することがありますSendTo メソッド正常に完了した場合は、基になるシステムネットワーク送信のためにデータバッファする余地があったことを示します

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

メモメモ

SocketException発生した場合は、SocketException.ErrorCode プロパティ使用して具体的なエラー コード取得してください。このコード取得したら、Windows Socket Version 2 API エラー コードドキュメントエラー詳細情報確認してください。これは MSDN ライブラリから入手できます

Windows Mobile for Pocket PCWindows Mobile for SmartphoneWindows 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

buffernull 参照 (Visual Basic では Nothing) です。

または

remoteEPnull 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

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

SocketException

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

ObjectDisposedException

Socket閉じられています。

解説解説

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

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

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

ブロッキング ソケットは、要求されたバイト数が送信されるまでブロックします。非ブロッキング Socket はすぐに完了するため、1 回操作では要求されたバイト一部送信されない可能性あります送信されたバイト数を監視し要求されたバイト数をすべて送信するまで操作再試行することは、アプリケーション側の責任です。また、送信したデータがすぐにネットワーク上に現れることは保証されません。ネットワーク効率高めるため、基になっているシステムは、十分な量の送信データ収集されるまで送信遅延することがありますSendTo メソッド正常に完了した場合は、基になるシステムネットワーク送信のためにデータバッファする余地があったことを示します

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

メモメモ

SocketException発生した場合は、SocketException.ErrorCode プロパティ使用して具体的なエラー コード取得してください。このコード取得したら、Windows Socket Version 2 API エラー コードドキュメントエラー詳細情報確認してください。これは MSDN ライブラリから入手できます

使用例使用例

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

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


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「socket_sendto」の関連用語

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

   

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



socket_sendtoのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2025 GRAS Group, Inc.RSS