慾望前等待客戶寫:我想連接到插座並有「運行」發送到客戶端的每一秒。套接字寫
當然這是一個測試。
Issue:輸出'running'僅在客戶端發送數據時發送。似乎循環暫停在客戶端等待回寫。
代碼:
$socket = @socket_create_listen("12345");
while (true) {
$client = socket_accept($socket);
$msg = "\nHello"."\r\n".chr(0);
$length = strlen($msg);
socket_write($client, $msg,$length);
usleep(5);
while (true) {
$msg = 'running'."\r\n".chr(0);
$length = strlen($msg);
socket_write($client, $msg, $length);
sleep(1);
}
}
實施例:上面的代碼是在我的服務器上的文件。如果我運行此文件,然後使用telnet連接到我的服務器的端口12345 telnet myip# 12345
我期望看到每秒鐘在控制檯上打印「運行」。相反,「跑步」只寫一次。如果我在控制檯中輸入某些內容(即將數據寫入服務器),則會再次顯示running。因此,當我向服務器發送內容時,只運行發送到控制檯。
這是什麼原因造成的?
感謝 JT
不可能說沒有看到同行代碼,但如果對方是送你的數據,併發送應該控制這些發送,你爲什麼不讀書呢? – EJP
@EJP同行代碼?以上代碼位於服務器上的文件中。當我運行該文件時,我可以使用telnet從命令提示符進行連接... telnet myip#12345 ...在這裏,我想運行在每秒響應。我不知道爲什麼你聲稱這是不可能的? –