经过几个小时的研究,我有点绝望了:
一台带有本地PHP应用程序的Windows7计算机,该应用程序通过套接字侦听端口12345。来自同一个Windows7:
- 如果我执行telnet localhost 12345,php代码会看到连接
- 如果我执行telnet 127.0.0.1 12345,php代码会看到连接
- 如果我执行telnet<local_ip_address>12345,php代码看不到连接
- 如果我执行telnet<dns_name>12345,php代码看不到连接
在另一台机器上,当我使用ip或dns地址时,我根本没有任何连接
从另一台具有相同地址但在端口80或21上的机器执行telnet操作非常完美。
即使禁用了本地防火墙/防病毒软件,我也会得到同样的结果
我使用标准的Apple TimeCapsule作为访问点,但没有经过特殊配置,不确定这是否会影响端口>1024…
你有什么想法吗
谢谢
我可以看到有两个选项来获得这种行为;
- 您的防火墙已启用(已测试)
- 您的套接字绑定到127.0.0.1,而不是公共IP
我想看看你的本地绑定,也就是你给socket_bind()
的地址。
如果它显示"127.0.0.1",请将其更改为0。
telnet 12345
正试图连接到IP为12345
十进制的机器,也就是点四进制格式的0.0.4.210
。你不能那样使用telnet——参数不能只是一个端口号。它将被解释为IP。