2013-11-10 69 views
0

我有一臺ZK F7考勤機,帶有TCP/IP端口,它通過附帶的軟件返回數據。但我想通過PHP使用php套接字收集考勤數據,然後將它們保存在mysql中。要做到這一點,我試着下面的代碼,但得到錯誤(調用未定義的函數socket_create())。應該怎樣解決這個錯誤?PHP插座錯誤連接設備

<?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; 
    } 
} 
?> 
+2

請確保您有安裝包: http://stackoverflow.com/questions/6137823/fatal-error-call-to-undefined-function-socket-create –

+0

啓用擴展= p​​hp_sockets.dll現在的錯誤是:「socket_bind():無法綁定地址[10049]:請求的地址在其上下文中無效。」我的設備ip是192.168.1.201,端口是4370.現在該怎麼辦?在此先感謝.... –

+0

您不能綁定到本地主機以外的另一臺計算機。它看起來好像你正在嘗試,但我不知道[該IP不是127.0.0.1或它的一些變種,我認爲你描述爲你的'設備IP',而不是你的主機IP],看看這篇文章:http:///objectmix.com/php/454591-sockets-requested-address-not-valid-its-context.html無論如何,你必須綁定到你的本地主機,並聽取或發送,而不是另一臺機器。 –

回答

1

您沒有啓用php_sockets擴展。去做,在php.ini中

+0

或包裝可能未安裝! –

+0

啓用extension = php_sockets.dll現在的錯誤是:「socket_bind():無法綁定地址[10049]:請求的地址在其上下文中無效。」我的設備ip是192.168.1.201,端口是4370.現在該怎麼辦?提前致謝.... –

0

更改線路

$mysock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 

$mysock = socket_create(AF_INET, SOCK_DGRAM, 0); 

,我想這將使用UDP連接到ZK設備修復它。