私はPHPソケットサーバーを作成しています。私は見つけたsocket_recv()は問題を引き起こしている、それは1つのコンピュータを接続することができます。しかし、私がコメントアウトした場合socket_recvそれは正常に動作します。しかし、ソケットサーバーでもデータを受け取る必要があります。ソリューションを見つけるのを手伝ってください。また、コードに間違いがあることを指摘してください。 JQueryの部分は正常に動作しているため、ここでは印刷しませんでした。PHP:socket_recv()によってソケットサーバーが中断されました。
<?php
set_time_limit(0);
$host = '172.28.4.5';
$port = 10000;
$null = NULL;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($socket, $host, $port);
socket_listen($socket);
$clients = array($socket);
while(true) {
$new_socket = socket_accept($socket);//Accepting new connection/socket/client if any
$clients[] = $new_socket;//Adding the new client/socket/connection to client array
$header = socket_read($new_socket, 1024);
perform_handshaking($header, $new_socket, $host, $port);
/* If I want to notify if new connection is established**/
socket_getpeername($new_socket, $ip);
$message = "Welcome to WebSocket $ip";
$array = array(
'message' => $message
);
$message = mask(json_encode($array));
write_to_socket($message);
$found = array_search($socket, $clients);
unset($clients["$found"]);
//Going through each client
foreach($clients as $client) {
//Getting messages with loop how many packages for each client has
while(socket_recv($client, $buf, 1024, 0) >= 1) {
$array = json_decode(unmask($buf));
print_r($array);
}
}
}
}
?>
あなたはもっとメッセージをくれますか?どうしましたか? –
私は1台のコンピュータにしか接続できませんでした。私は*** socket_recv()***を使用しない場合、その正常に動作します。 –