PHP使用socket_bind绑定同网段指纹设备失败,寻求解决方案
PHP绑定指纹机IP问题解决方案
问题描述
将我的设备与指纹机处于同一网段(本机IP:192.168.18.yyy,指纹机IP:192.168.18.xxx),使用PHP的socket_bind函数可成功绑定本机IP,但无法绑定指纹机IP,请问在PHP中如何实现该操作?我的代码如下:
error_reporting(E_ALL); set_time_limit(0); ob_implicit_flush(); $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_bind($socket, 192.168.18.xxx, 7788); socket_listen($socket, 32);
解决方案
- 你不能直接绑定指纹机的IP到本地socket上,因为
socket_bind的作用是将socket绑定到本机的网络接口IP,指纹机的IP属于另一台独立设备,你的机器没有权限也无法直接绑定不属于自己的IP地址。 - 如果你需要和指纹机通信,分两种场景处理:
- 主动连接指纹机:无需绑定对方IP,直接创建socket后用
socket_connect发起连接即可,示例代码:error_reporting(E_ALL); set_time_limit(0); ob_implicit_flush(); $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); // 替换为指纹机实际开放的服务端口 socket_connect($socket, '192.168.18.xxx', 7788); - 等待指纹机主动推送数据:绑定本机IP(或
0.0.0.0,代表监听所有本机网络接口)到指定端口,同时在指纹机的后台配置中,设置将数据推送到你的机器IP和端口,示例代码:error_reporting(E_ALL); set_time_limit(0); ob_implicit_flush(); $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); // 绑定本机IP和端口 socket_bind($socket, '192.168.18.yyy', 7788); socket_listen($socket, 32);
- 主动连接指纹机:无需绑定对方IP,直接创建socket后用
内容的提问来源于stack exchange,提问作者Sriyan Arosha
相关产品推荐
相关产品推荐

