tcp ip客户端-服务器连接以接收php中的XML数据
嗨,伙计们,你好吗。 我有一个向网络发送XML数据的网络设备,因此我目前正在开发一个监控应用程序,该应用程序将永久连接到此设备以接收XML数据,只要该设备在连接时继续向网络发送数据 我使用了php套接字编程,我的应用程序连接到服务器,虽然它不断发送xml数据,但以倍数的形式发送,我尝试找到一种方法,在xml数据循环通过时发送,并且只有在设备发送另一个数据但不以这种方式工作时才重新发送。代码如下:tcp ip客户端-服务器连接以接收php中的XML数据,php,xml,sockets,tcp,Php,Xml,Sockets,Tcp,嗨,伙计们,你好吗。 我有一个向网络发送XML数据的网络设备,因此我目前正在开发一个监控应用程序,该应用程序将永久连接到此设备以接收XML数据,只要该设备在连接时继续向网络发送数据 我使用了php套接字编程,我的应用程序连接到服务器,虽然它不断发送xml数据,但以倍数的形式发送,我尝试找到一种方法,在xml数据循环通过时发送,并且只有在设备发送另一个数据但不以这种方式工作时才重新发送。代码如下: <?php //timeout limit set_time_limit(0); //C
<?php
//timeout limit
set_time_limit(0);
//Creating Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error($socket)) . "<br />";
} else {
echo "OK.<br />";
}
echo "Attempting to connect to the socket'...";
$result = socket_connect($socket, '192.168.43.50', 10001);
if ($result === false) {
echo "socket_connect() failed.<br />Reason: ($result) " . socket_strerror(socket_last_error($socket)) . "<br />";
} else {
echo "OK.<br />";
}
$in = "GET / HTTP/1.1\r<br />";
$in .= "Host: 192.168.43.50\r\n<br />";
$in .= "Content-Type: application/xml; encoding=UTF-8\r\n";
$in .= "Accept: application/xml\n";
$in .= "Connection: Close\r<br />\r<br />";
$out= '';
echo "Sending HTTP HEAD request...";
socket_write($socket, $in, strlen($in));
echo "OK.<br />";
echo "Reading response:<br /><br />";
while ($out = socket_read($socket, PHP_BINARY_READ g)) {
//$result= simplexml_load_string($out) or die ("Error: Cannot create object");
//print_r ($result);
echo htmlspecialchars ($out)."\r\n /<br /><br />";
echo "Closing socket...";
socket_close($socket);
echo "OK.<br /><br />";
?>
当PHP已经启动时,真的没有理由编写自己的HTTP客户端库。如果你需要一个持久连接,试着利用一个现有的协议,比如它有多种语言的实现,包括PHP。当PHP已经存在时,没有理由编写你自己的HTTP客户端库。如果您需要一个持久连接,请尝试利用现有的协议,比如它有多种语言的实现,包括PHP。
<?php
$fp = fsockopen("192.168.43.50", 10001, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)";
} else {
$wait = true;
$out = '<?xml version="1.0" encoding="UTF-8"?>';
// [1] disable blocking
stream_set_blocking($fp, 0);
fwrite($fp, $out);
while (!feof($fp)) {
$r = fgets($fp);
echo htmlspecialchars ($r);
if (!strcmp($r, "")){
if (!$wait) {
// [2] has recieved data on this socket before
break;
}
} else {
$wait = false;
}
}
fclose($fp);
}
?>