2013-09-23 87 views
0

下面是一個簡單的服務器程序:PHP的警告:socket_bind():無法綁定地址[98]:地址已在使用

<?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); 
} 
?> 

,我需要的是端口綁定沒有。關閉套接字後再次。 每一次,在第一個循環中沒有錯誤,在第二個循環中,我得到錯誤。我想,港口沒有清理。我使用Cent OS,我嘗試了一些linux命令來刷新端口,但沒用。
任何人都可以解釋在這種情況下實際發生了什麼? 在同一個進程中關閉後如何重新使用相同的端口?

回答

0

每次在循環中都不需要創建,綁定,偵聽和關閉偵聽套接字。所以不要。

+0

我知道這一點。我可以直接讀寫客戶端。它只是一個例子。但是如果首次連接到客戶端無法重新建立連接,我需要做所有這些事情。 – user2764644

相關問題