• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > DedeCMS教程 > DedeCMS安装使用 >

PHP或Python调用C++实现的服务器

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-01-12点击:

PHP或Python调用C++实现服务器

来源:互联网 作者:PHPer 发表于:2009-09-29 11:02  点击:

周末2天,一天写了个php_cerl模块,完成cerl的php client,一天写了个pycerl模块,完成cerl的python client。呵呵,C++的server可以用php或者python来调用了。 对于我们之前用CERL写的HashServer这个服务器(一个很简单的样例,代码参阅:Erlang vs. CERL -

周末2天,一天写了个php_cerl模块,完成cerl的php client,一天写了个pycerl模块,完成cerl的python client。呵呵,C++的server可以用php或者python来调用了。

对于我们之前用CERL写的HashServer这个服务器(一个很简单的样例,代码参阅:Erlang vs. CERL - CERL简介),其PHP写的Client样例如下:

view plaincopy to clipboardprint?
<?php
define('HashSever_put', 1);
define('HashSever_get', 2);

if (!extension_loaded('php_cerl')) {
if (!dl('php_cerl.' . PHP_SHLIB_SUFFIX))
die("ERROR: Cannot load php_cerl library!\n");
}

cerl_thread_init();

$server = cerl_connect('localhost:8889', 'HashServer');
if (!$server)
die("ERROR: Connect HashSever failed!\n");

printf(
"+-----------------------------------------------------------\n" .
"| put <key> <value> - Put (key, value)\n" .
"| get <key> - Get value of a key\n" .
"| q - Quit\n" .
"+-----------------------------------------------------------\n");

for (;;)
{
echo "\n> ";
list($cmd, $key, $value) = fscanf(STDIN, '%s%d%d');
if ($cmd == 'get' || $cmd == 'g')
{
$ret = $server->call(HashSever_get, $key);
if ($ret[0] == code_ok)
echo "result: $ret[1]\n";
else
echo "error: $ret[0]\n";
}
else if ($cmd == 'put' || $cmd == 'p')
{
$ret = $server->call(HashSever_put, $key, $value);
if ($ret[0] == code_ok)
echo "ok!\n";
else
echo "error: $ret[0]\n";
}
else if ($cmd == 'q')
{
break;
}
else
{
echo "unknown command!\n";
}
}

cerl_thread_term();
?>
<?php
define('HashSever_put', 1);
define('HashSever_get', 2);

if (!extension_loaded('php_cerl')) {
if (!dl('php_cerl.' . PHP_SHLIB_SUFFIX))
die("ERROR: Cannot load php_cerl library!\n");
}

cerl_thread_init();

$server = cerl_connect('localhost:8889', 'HashServer');
if (!$server)
die("ERROR: Connect HashSever failed!\n");

printf(
"+-----------------------------------------------------------\n" .
"| put <key> <value> - Put (key, value)\n" .
"| get <key> - Get value of a key\n" .
"| q - Quit\n" .
"+-----------------------------------------------------------\n");

for (;;)
{
echo "\n> ";
list($cmd, $key, $value) = fscanf(STDIN, '%s%d%d');
if ($cmd == 'get' || $cmd == 'g')
{
$ret = $server->call(HashSever_get, $key);
if ($ret[0] == code_ok)
echo "result: $ret[1]\n";
else
echo "error: $ret[0]\n";
}
else if ($cmd == 'put' || $cmd == 'p')
{
$ret = $server->call(HashSever_put, $key, $value);
if ($ret[0] == code_ok)
echo "ok!\n";
else
echo "error: $ret[0]\n";
}
else if ($cmd == 'q')
{
break;
}
else
{
echo "unknown command!\n";
}
}

cerl_thread_term();
?>

而Python写的Client样例如下:

view plaincopy to clipboardprint?
HashSever_put = 1
HashSever_get = 2

import sys, pycerl

pycerl.thread_init()

server = pycerl.connect("localhost:8889", "HashServer")
if not server:
print "ERROR: Connect HashSever failed!"

有帮助

(0)

0%

没帮助

(0)

0%

  • 上一篇:PHP文件包含漏洞原理分析和利用方法
  • 下一篇:PHP加密解密内部算法
  • About D8

    • ©2014 织梦吧(d8) DedeCMS学习交流平台
    • 唯一网址 www.DedeCMS8.com 网站地图
    • 联系我们 1978130638@qq.com ,  QQ