易截截图软件、单文件、免安装、纯绿色、仅160KB

PHP服务器端通过命名管道与C/C++程序通信

在这几天的工作过程中,需要实现PHP在服务器端能与其他程序通信。和老何俩人研究了半天,终于大致弄出了一个用WINDOWS的命名管道通信的方法。
有几点需要注意的:
PHP服务器端我们每次都是重新挂接命名管道。(这样写,PHP端代码量极其少,而且也很方便。)
那么我们用C/C++写的命名管道服务器则需要每次通信都创建一次管道(方法很恶心,但是暂时能实现,而且对效率要求不是那么高。我们就这么用了。)
如果不是每次都创建管道的话,会出现109错误——这个问题我们调了N久……
还有一个时序问题,在管道SERVER端每次关闭后,需要等PHP端从管道中取完数据,再重新创建管道。(此处我们为图方便,暂时用的sleep。)
下面给出例子:
PHP客户端
function Pipe($msg)
{
$fp = @fopen("\\\\.\\pipe\\tongxun", 'w+r+b');
@fwrite($fp,$msg);//写
$result = @fread($fp,256);//读
fclose($fp);
}
C++服务器端
while(1)
{
// 创建管道服务器
char strPipeName[] = "\\\\.\\pipe\\tongxun";
char szBuf[1024] = {0};
DWORD dwRead ;
DWORD userID;
char cmd;

PSECURITY_DESCRIPTOR psd;
psd = (PSECURITY_DESCRIPTOR) LocalAlloc(LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH);
if (!InitializeSecurityDescriptor(psd, SECURITY_DESCRIPTOR_REVISION))
{
LocalFree((HLOCAL)psd);
return -1;
}
if (!SetSecurityDescriptorDacl(psd, TRUE, (PACL)NULL, FALSE))
{
LocalFree((HLOCAL)psd);
return -1;
}
SECURITY_ATTRIBUTES saAttr;
saAttr.nLength =sizeof(SECURITY_ATTRIBUTES);
saAttr.lpSecurityDescriptor = psd;
saAttr.bInheritHandle = TRUE;
HANDLE hIPC = CreateNamedPipe(strPipeName,
PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
1, 0, 0, 1000, &saAttr);
if (hIPC == INVALID_HANDLE_VALUE)
{
return -1;
}
// 连接管道
ConnectNamedPipe(hIPC, NULL);
// 从管道读取信息
if (!ReadFile(hIPC, szBuf, sizeof(szBuf), &dwRead, 0))
{
break;
}
//处理读到的数据szBuf...
....
//写数据...
//如WriteFile(hIPC, msg, strlen(msg), &dwWrite, NULL)
CloseHandle(hIPC);
Sleep(100);
}


相关文档:

CentOS LAMP环境搭建和测试php与mysql的连接


    * 摘要:CentOS LAMP作为服务器,不安装不需要的组件,所以在选择组件的时候,不要选web服务器,因为我们后面要手动编译安装。CentOS LAMP系统约定RPM包和源码包存放位置
    * 标签:CentOS LAMP
    *
      Oracle帮您准确洞察各个物流 ......

php+mysql乱码问题

问题描述:
从php界面insert数据到mysql,只能输入偶数个汉字不能输入奇数个汉字,输入奇数个汉字后报“Data too long for column ”错误,并没有更改数据库数据。到数据库查看,发现汉字都是乱码。但是php界面显示汉字正常(当然显示的都是偶数个汉字,奇数个汉字都没有写入数据库)。
解决思路:
1.更改my.i ......

C++的XML编程经验――LIBXML2库使用指南

写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML库,而且它同时支持多种编程语言;2)LIBXML2库的Tutorial写得不太好,尤其是编码转换的部分,不适用于中文编码的转换;3)网上的大多数关于Libxml2的介绍仅仅是翻译了自带的资料,没有详细介 ......

CentOS5 no acceptable C compiler found in $PATH

CentOs5安装apache的时候
#./configure
(于检查系统是否有编译时所需的库,以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。)
提示错误如下:(没有GCC编译器环境)
checking build system type... i686-pc-linux-gnu
checking host system type.. ......

(转)C/C++中时间函数的介绍

1.概念
       在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法.  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号