Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2010, 03:07   #1
Nexta_s
Пользователь
 
Регистрация: 18.08.2010
Сообщений: 15
По умолчанию Пообщаться с терминалом (железным)

Есть некая железка, которая ждет соединение по определенному порту. Причем, ожидает она кусок xml кода в определенной последовательности.
В ответ тоже отдает код xml в заданной последовательности.

Есть скрипт вот такой, но соединение либо сбрасывается по таймауту либо не создается
<?php
if (!isset($xml_connected)) {

function xml_connect(){
global $ip, $xml_socket;
$ip=$_SERVER['REMOTE_ADDR'];
$server_ip="server";
$server_port=port;
$rq=$_REQUEST['rq'];


$xml_socket = @fsockopen($server_ip, $server_port, &$errno, &$errstr, 60);

if(!$xml_socket) {
return -1;
}
else {return 0;}
function xml_request($rq) {
global $xml_socket,$ip, $receive_xml;
if($xml_socket)
{
if (empty($rq)){ return -1;}
//если переменная пустая код ошибки -1
else {
//во всех остальных случаях
$xmlrq= "<?xml version=\"1.0\" encoding=\"Windows-1251\" ?><request ip=".$ip.">".$rq ."</request>"."\r\n+++\r\n";
//вот она последовательность, вроде соединение с оборудованием есть, но не принимается ответ, в ошибки никакие не попадает.
// такое чувство, что не может принять ответ или не видит последовательность конца отправленного.
fputs($xml_socket,$xmlrq);
socket_set_blocking($xml_socket, true);
socket_set_timeout($xml_socket, 20);

$receive_xml=" ";
do {
$tmp_receive_xml=fgets($xml_socket) ;
$receive_xml=$receive_xml.$tmp_rece ive_xml;
} while (($tmp_receive_xml) and (strcmp($tmp_receive_xml, "+++")!=2));
fclose($xml_socket);

$receive_xml_end = strpos($receive_xml, "\r\n+++\r\n"); }


if (!$receive_xml_end){$receive_xml_st r=-1;} else{$receive_xml_str=simplexml_loa d_string(substr($receive_xml,0,strl en($receive_xml)-6));
return $receive_xml_str;} }
else{ $receive_demon_str=-1; }
return $receive_demon_str; }
//конец функции
}

function u2w($str) { return iconv( "UTF-8", "CP1251", $str); }

$xml_connected=true;}
?>
Синтаксических ошибок не наблюдается.
Nexta_s вне форума Ответить с цитированием
Старый 07.12.2010, 16:54   #2
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

Цитата:
Синтаксических ошибок не наблюдается
$server_port=port;

Попробуйте $port
No name. Just Linel.
Linel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто подскажет где можно найти и пообщаться с хорошим програмистом. rossijanin Фриланс 15 30.10.2010 14:26
Кто подскажет где можно найти и пообщаться с хорошим програмистом. rossijanin Свободное общение 8 27.10.2010 14:56
Процессы, связаные с терминалом (С/С++) tisha077 Общие вопросы C/C++ 0 07.01.2010 17:43
Процессы, связаные с терминалом (С/С++) tisha077 Помощь студентам 0 07.01.2010 17:22
С помощью методов и свойств объекта осуществляется управление терминалом. Имя (идентификатор) объекта User>lia Общие вопросы Delphi 4 16.01.2009 16:37