|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.12.2010, 03:07 | #1 |
Пользователь
Регистрация: 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;} ?> Синтаксических ошибок не наблюдается. |
07.12.2010, 16:54 | #2 | |
Форумчанин
Регистрация: 21.02.2009
Сообщений: 372
|
Цитата:
Попробуйте $port
No name. Just Linel.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кто подскажет где можно найти и пообщаться с хорошим програмистом. | 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 |