我正在尝试为我正在进行的一个小项目创建一个 Web Socket 服务器。
我已经设置了服务器(位于家中)并将端口转发到 80 和 22。我阅读了本教程:here
每当我通过 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";
有没有人对为什么这不允许我建立连接有任何建议?
最佳答案
我猜问题出在 Linux 服务器上。
在 root 下运行 netstat -a -p -n
命令(例如使用 sudo
)以了解哪个进程正在使用该端口。然后也许做一个setsockopt(2)使用 SO_REUSEADDR
(有关更多信息,请参阅 socket(7))。
TCP 协议(protocol)有一些指定的延迟(以分钟为单位)(例如保持事件等)。参见例如tcp(7)
我确实建议阅读一本关于 Linux 系统编程的好书,例如 Advanced Linux Programming也许还有一些关于网络编程的 Material 。
关于php - socket_bind() 无法绑定(bind)地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15041518/