socket_recvfrom
接続指向かどうかにかかわらず、ソケットからデータを受信する
関数名:socket_recvfrom()
該当するバージョン:PHP 4> = 4.1.0、PHP 5、PHP 7
関数の説明:socket_recvfrom()関数は、指定されたソケットからデータを受信し、指定された変数に送信者のアドレスとポートを保存します。
構文:int socket_recvfrom(resource $ socket、string&$ buf、int $ len、int $ flags、string&$ name [、int&$ port])
パラメーター説明:
返品値:成功したときに受信したバイト数を返し、障害時にfalseを返します。
サンプルコード:
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); if ($socket === false) { echo "socket_create() failed: " . socket_strerror(socket_last_error()) . "\n"; exit; } $bind = socket_bind($socket, '0.0.0.0', 8888); if ($bind === false) { echo "socket_bind() failed: " . socket_strerror(socket_last_error($socket)) . "\n"; exit; } $buffer = ''; $senderAddress = ''; $senderPort = 0; // 接收数据并获取发送方的地址和端口$bytes = socket_recvfrom($socket, $buffer, 1024, 0, $senderAddress, $senderPort); if ($bytes === false) { echo "socket_recvfrom() failed: " . socket_strerror(socket_last_error($socket)) . "\n"; exit; } echo "Received $bytes bytes from $senderAddress:$senderPort\n"; echo "Data: $buffer\n"; socket_close($socket);
上記のサンプルコードはUDPソケットを作成し、ローカルポート8888にバインドします。次に、socket_recvfrom()関数を使用してデータを受信し、対応する変数に送信者のアドレスとポートを保存します。最後に、受信したデータ、送信者のアドレス、ポートを出力し、ソケットを閉じます。
注:この例は、UDPソケットを使用することです。 TCPソケットを使用する必要がある場合は、Socket_Recv()関数を使用してデータを受信する必要があります。