我有两台机器,一台是服务器,另一台是笔记本电脑。它们都在我的本地网络上。笔记本电脑还具有虚拟机。
我有以下代码,由于打开了指向虚拟机上运行的Web服务器的网页(在笔记本电脑上),结果在笔记本电脑上的虚拟机上运行:
$header=$this->getHeader();
$this->socket = fsockopen($host, $port, $errno, $errstr, 2);
socket_set_timeout($this->socket, 0, 10000);
fwrite($this->socket, $header);
usleep(50000);
$response = fread($this->socket, 15000);
$host
是服务器,那里有一个PHP websockets服务器,用于监听连接。
如果我在本地网络(192.168.0.x)上全部运行,则一切正常。问题是当我尝试通过openvpn(10.122.122.x)连接时。
我已跟踪发生的情况,并查看了各种日志,可以确认服务器是否正在从便携式计算机中的VM接收请求,它正确读取了$header
数据并做出了适当的响应,但是{{1} }不返回任何内容。我在日志中找不到任何指示问题的内容,并且代码继续运行(只是没有连接)。
就VPN而言,一切似乎工作正常。我可以使用VPN IP,并且代码的fread($this->socket, 15000);
部分确实可以正常工作。
只是进一步混淆,在笔记本电脑上的浏览器中运行的javascript代码可以侦听websockets消息,在VPN上可以正常工作!问题似乎仅是在我的虚拟机上运行的php代码。
我还能在哪里找到问题所在?