1

以下は単純なサーバー プログラムです。

<?php
for($i=0;$i<=5;$i++)
{
$host = "xxxxx";
$port=10000;
set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n".socket_strerror(socket_last_error()) );
$result = socket_listen($socket, 3) or die("Could not set up socket listener\n".socket_last_error() );
$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");
$input = socket_read($spawn, 2048) or die("Could not read incoming connection\n");
$input = trim($input);
echo "Client Message : ".$input."\n";
socket_close($spawn);
socket_close($socket);
flush(); @ob_flush();
sleep(10);
}
?>

そのポート番号をバインドする必要があります。ソケットを閉じた後、もう一度。毎回、最初のループではエラーは発生しませんが、2 番目のループではエラーが発生します。ポートがクリアされていないと思いました。Cent OS を使用しています。ポートを更新するためにいくつかの Linux コマンドを試しましたが、使用できませんでした。
この場合、実際に何が起こっているのか誰か説明できますか? 同じプロセスで閉じた後、同じポートを再利用するにはどうすればよいですか?

4

1 に答える 1