監(jiān)聽的udp端口6000,
worker里有一個listen和unlisten方法,我希望在一個邏輯地方,unlisten,使用異步udp發(fā)起一個連接,指定使用6000端口發(fā)起,然后調(diào)用listen.
但是為什么還是報already in use 錯誤.
代碼如下:
$server就是監(jiān)聽在4788下的worker,
這段代碼寫在一個回調(diào)里面,
打印unlisten的信息(改worker.php),確實關(guān)閉了socket,對象屬性_mainSocket也為null,把fclose換成stream_socket_shutdown也不行.
$server->unlisten();
foreach ($server->connections as $connection) {
$connection->close();
}
// sleep(1);
// connect to the internet using port '4788'
$opts = array(
'socket' => array(
'bindto' => '0:4788',
),
);
$find_conn = new AsyncUdpConnection($address,$opts);
$find_conn->worker = $server;
$find_conn->action = $action;
$find_conn->protocol = $server->protocol;
// $find_conn->onConnect = function($connection) use ($msg,$server){
// $connection->close($msg);
// $server->listen();
// };
// $find_conn->connect();
$find_conn->close($msg);
$server->listen();
根據(jù)打印的信息,unlisten確實執(zhí)行了但是stream_socket_client還是不能占用這個端口,這是為什么?