И как успехи?adeep писал(а):есть желание поучаствовать.
сам делают тоже самое, но для python.
urfaclient на C
-
- Сообщения: 120
- Зарегистрирован: Вс ноя 22, 2009 02:41
- Откуда: Чебоксары
у сокетов в python нет понятия проверки на EOF, которая используется в пхп варианте, посколько знаний о протоколе недостаточно (я так понял, что неизвестно сколько и какой информации ядро выплевывает в клиента в некоторых случаях).
В таких ситуациях в питоне приходится спрыгивать через таймаут чтения, что либо тормозит обмен данными (если таймаут большой), либо может привести к потере связи (если таймаут меньше чем задержки в обмене данными)
В таких ситуациях в питоне приходится спрыгивать через таймаут чтения, что либо тормозит обмен данными (если таймаут большой), либо может привести к потере связи (если таймаут меньше чем задержки в обмене данными)
Проверка на eof это просто дополнительная проверка на ошибки.adeep писал(а):у сокетов в python нет понятия проверки на EOF, которая используется в пхп варианте, посколько знаний о протоколе недостаточно (я так понял, что неизвестно сколько и какой информации ядро выплевывает в клиента в некоторых случаях).
В таких ситуациях в питоне приходится спрыгивать через таймаут чтения, что либо тормозит обмен данными (если таймаут большой), либо может привести к потере связи (если таймаут меньше чем задержки в обмене данными)
Поток же данных управляется атрибутами.
Например в функции
Код: Выделить всё
function urfa_get_data() {
$packet = $this->getPacket();
$packet->clean();
while(true) {
if (!feof($this->socket)) {
$packet->read();
if ($packet->AttrGetInt(4))
break;
}
}
if (count($packet->data)==0)
return FALSE;
return $packet;
}
А eof в данном случае просто проверка, что в соединение живое.
Можно конечно обойтись и без нее, если напрмер использовать исключения, или другим способом проверять наличие соединения. На тему питона и сокетов не могу ничего сказать, не силен.
пока глубоко в протоколе не ковырялся.ds писал(а): Конец принятых данных определяется по приходу атрибута (4).
А eof в данном случае просто проверка, что в соединение живое.
Можно конечно обойтись и без нее, если напрмер использовать исключения, или другим способом проверять наличие соединения. На тему питона и сокетов не могу ничего сказать, не силен.
но как показала практика - таймауты, выставленные вместо проверок на eof, все таки срабатывают.
тут месяц из жизни программистской выпал) на досуге продолжу ковыряться, посмотрю что и как.
ds если что
jid: adeep@jabber.ru
icq: 137063955
-
- Сообщения: 120
- Зарегистрирован: Вс ноя 22, 2009 02:41
- Откуда: Чебоксары
Рассматривали bgbilling, но что-то он дорогой какой-то.banec писал(а): гы а в пользу какого ? stopor()mail.by скиньте что рассматриваете плиз.
PS: Написал примеры нескольких простейших скриптов на perl: https://sourceforge.net/apps/trac/ourfa ... rlExamples
Последний раз редактировалось littlesavage Ср мар 24, 2010 00:37, всего редактировалось 1 раз.
-
- Сообщения: 120
- Зарегистрирован: Вс ноя 22, 2009 02:41
- Откуда: Чебоксары
Написал небольшой кабиент клиента на базе Catalyst, с использоватем Ourfa для доступа к UTM: http://sourceforge.net/apps/trac/ourfa/wiki/InfaoClient
-
- Сообщения: 13
- Зарегистрирован: Ср мар 17, 2010 14:14
при выполнении make test получаю
cd ourfa && make
make[1]: Entering directory `/home/volniy/c_utm5/ourfa-0.2beta1/ourfa-perl/ourfa'
make[1]: Leaving directory `/home/volniy/c_utm5/ourfa-0.2beta1/ourfa-perl/ourfa'
make[1]: Entering directory `/home/volniy/c_utm5/ourfa-0.2beta1/ourfa-perl/ourfa'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/volniy/c_utm5/ourfa-0.2beta1/ourfa-perl/ourfa'
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/Ourfa....
# Failed test 'use Ourfa;'
# in t/Ourfa.t at line 9.
# Tried to use 'Ourfa'.
# Error: Can't load '/home/volniy/c_utm5/ourfa-0.2beta1/ourfa-perl/blib/arch/auto/Ourfa/Ourfa.so' for module Ourfa: /home/volniy/c_utm5/ourfa-0.2beta1/ourfa-perl/blib/arch/auto/Ourfa/Ourfa.so: undefined symbol: be64toh at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230.
# at (eval 3) line 2
# Compilation failed in require at (eval 3) line 2.
# BEGIN failed--compilation aborted at t/Ourfa.t line 9.
# Looks like you failed 1 test of 1.
t/Ourfa....dubious
Test returned status 1 (wstat 256, 0x100)
DIED. FAILED test 1
Failed 1/1 tests, 0.00% okay
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/Ourfa.t 1 256 1 1 100.00% 1
Failed 1/1 test scripts, 0.00% okay. 1/1 subtests failed, 0.00% okay.
make: *** [test_dynamic] Error 1
cd ourfa && make
make[1]: Entering directory `/home/volniy/c_utm5/ourfa-0.2beta1/ourfa-perl/ourfa'
make[1]: Leaving directory `/home/volniy/c_utm5/ourfa-0.2beta1/ourfa-perl/ourfa'
make[1]: Entering directory `/home/volniy/c_utm5/ourfa-0.2beta1/ourfa-perl/ourfa'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/volniy/c_utm5/ourfa-0.2beta1/ourfa-perl/ourfa'
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/Ourfa....
# Failed test 'use Ourfa;'
# in t/Ourfa.t at line 9.
# Tried to use 'Ourfa'.
# Error: Can't load '/home/volniy/c_utm5/ourfa-0.2beta1/ourfa-perl/blib/arch/auto/Ourfa/Ourfa.so' for module Ourfa: /home/volniy/c_utm5/ourfa-0.2beta1/ourfa-perl/blib/arch/auto/Ourfa/Ourfa.so: undefined symbol: be64toh at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230.
# at (eval 3) line 2
# Compilation failed in require at (eval 3) line 2.
# BEGIN failed--compilation aborted at t/Ourfa.t line 9.
# Looks like you failed 1 test of 1.
t/Ourfa....dubious
Test returned status 1 (wstat 256, 0x100)
DIED. FAILED test 1
Failed 1/1 tests, 0.00% okay
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/Ourfa.t 1 256 1 1 100.00% 1
Failed 1/1 test scripts, 0.00% okay. 1/1 subtests failed, 0.00% okay.
make: *** [test_dynamic] Error 1
-
- Сообщения: 120
- Зарегистрирован: Вс ноя 22, 2009 02:41
- Откуда: Чебоксары
-
- Сообщения: 13
- Зарегистрирован: Ср мар 17, 2010 14:14
-
- Сообщения: 13
- Зарегистрирован: Ср мар 17, 2010 14:14
Segmentation fault (core dumped)
C glibc разобрались.
При выполнении функции rpcf_add_to_ipgroup
получаю Segmentation fault (core dumped)
Как добавить сеть?
При выполнении функции rpcf_add_to_ipgroup
получаю Segmentation fault (core dumped)
Как добавить сеть?
-
- Сообщения: 120
- Зарегистрирован: Вс ноя 22, 2009 02:41
- Откуда: Чебоксары
Re: Segmentation fault (core dumped)
С glibc когда писал, думал что младше 2.9 уже не использется. ПРошу прощенияVolniy_Strelok писал(а):C glibc разобрались.
При выполнении функции rpcf_add_to_ipgroup
получаю Segmentation fault (core dumped)
Как добавить сеть?
rpcf_add_to_ipgroup - скорее всего такой функции просто нет в api.xml (а ее там точно нет). Есть ф-я rpcf_add_ipgroup - добавление IP группы в список адресов IP -зоны.
Некорректое завершение программы при такой ошибке исправbk (в свн), спасибо.
-
- Сообщения: 13
- Зарегистрирован: Ср мар 17, 2010 14:14
rpcf_add_ipgroup
Немогли бы вы дать рабочий кусок кода для добавления IP группы в список адресов IP -зоны?
Ни как не получается добавить сеть с помощью rpcf_add_ipgroup.
Ни как не получается добавить сеть с помощью rpcf_add_ipgroup.