我正在尝试为我正在处理的小项目创建一个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)以了解正在使用该端口的进程.然后也许用SO_REUSEADDR做一个setsockopt(2)
(详见socket(7)).
TCP协议在几分钟内有一些指定的延迟(例如keepalive等等……).参见例如tcp(7)
我建议你阅读一本关于Linux系统编程的好书,如Advanced Linux Programming,也许还有一些关于网络编程的资料.
标签:php,linux,webserver,websocket
来源: https://codeday.me/bug/20190718/1493685.html