【发布时间】:2013-11-10 01:50:44
【问题描述】:
我有一台带TCP/IP端口的ZK F7考勤机,通过自带的软件返回数据。但我想通过 php 使用数组中的 php socket 收集考勤数据,然后将它们保存在 mysql 中。为此,我尝试了下面的代码,但出现错误(调用未定义的函数 socket_create())。错误应该怎么解决?
<?php
// Server IP address
$address = "192.168.1.201";
// Port to listen
$port = 4370;
$mysock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($mysock,$address, $port) or die('Could not bind to address');
socket_listen($mysock, 5);
$client = socket_accept($mysock);
// read 1024 bytes from client
$input = socket_read($client, 1024);
// write received gprs data to the file
writeToFile('socketLog.txt', $input);
socket_close($client);
socket_close($mysock);
function writeToFile($strFilename, $strText) {
if($fp = @fopen($strFilename,"w")) {
$contents = fwrite($fp, $strText);
fclose($fp);
return true;
} else {
return false;
}
}
?>
【问题讨论】:
-
启用了 extension=php_sockets.dll 现在错误是:“socket_bind(): 无法绑定地址 [10049]: 请求的地址在其上下文中无效。”我的设备ip是192.168.1.201,端口是4370,现在怎么办?在此先感谢....
-
您不能绑定到除本地主机之外的另一台机器。看起来好像您正在尝试,但我不确定 [ip 不是 127.0.0.1 或其某种变体,我认为您将其描述为您的“设备 ip”而不是您的主机 ip],请查看这篇文章:objectmix.com/php/…无论如何,您必须绑定到您的本地主机并收听或发送,而不是另一台机器。
-
我的ZK F7考勤机通过以太网(RJ45)在同一网络(192.168.1.201)连接到我的电脑,机器的端口是4370。我想从机器上获取考勤数据通过TCP/IP。在这种情况下我该怎么办?
-
在您的服务器(php 解释器所在的位置)上创建一个套接字,并在您的设备设置的相同套接字配置上等待输入。如果您需要将输入从服务器发送到设备,请查看:php.net/manual/en/function.socket-send.php