socket_bind()无法绑定地址

我正在尝试为我正在处理的一个小项目创build一个Web Socket服务器。

我已经build立了服务器(位于家中),并有端口转发80和22.我阅读本教程: 在这里

而且每当我ssh到我的服务器运行“startDarmon.php”我得到以下错误:

PHP Warning: socket_bind(): unable to bind address [98]: Address already in use in /var/www/server/socket.class.php on line 48 2013-02-23 14:15:38 System: Socket bound to localhost:8000. 2013-02-23 14:15:38 System: Start listening on Socket 

这是我认为阻止我的客户端连接到服务器。 所以在startDarmon.php文件中我有:

 $WebSocket = new socketWebSocket('MY_IP_NOT_LAN_IP',8000); 

而在我的客户端文件中,我有:

 var host = "ws://MY_IP_NOT_LAN:8000/server/startDaemon.php"; 

有没有人有任何build议,为什么这不允许我build立连接?

我猜这个问题是在Linux服务器上。

在根目录下(例如使用sudo )运行netstat -a -p -n命令,了解哪个进程正在使用该端口。 然后也许用SO_REUSEADDR做一个setsockopt(2) (更多的参见socket(7) )。

TCP协议在几分钟内有一些特定的延迟(例如保持活动等等)。 参见例如tcp(7)

我建议阅读一本关于Linux系统编程的好书,比如高级Linux编程 ,也许还有一些关于网络编程的材料。

您可以使用以下设置重复使用地址:

 if ( ! socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1)) { echo socket_strerror(socket_last_error($sock)); exit; } 

另一个应用程序已经在使用您尝试使用的端口。您可以运行

 lsof -i:port_no 

使港口免费。