首页 开发编程 正文

php和c通讯问题怎么办(php和c通讯问题怎么办解决)

sizeof(server));server.sin_addr.s_addr=inet_addr(server_ip);server.sin_port=htons(SERV_PORT);servaddr_len=sizeof(server);client_len=sizeof(client);client_len);}close(so...

本篇文章给大家谈谈php和c通讯问题怎么办,以及php和c通讯问题怎么办解决对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录:

PHP怎么与C语言通信?

/*server.c*/

#include string.h

#include stdio.h

#include netinet/in.h

#include stdlib.h

#define SERV_PORT 8000

int main()

{

int sockfd,n,servaddr_len,client_len,connfd;

char * server_ip = "127.0.0.1";

char buf[80];

struct sockaddr_in server,client;

sockfd = socket (AF_INET,SOCK_STREAM,0);

bzero(server,sizeof(server));

server.sin_family = AF_INET;

server.sin_addr.s_addr = inet_addr(server_ip);

server.sin_port = htons(SERV_PORT);

servaddr_len = sizeof(server);

client_len=sizeof(client);

bind(sockfd,(struct sockaddr *) server,servaddr_len);

listen(sockfd,6);

while(1)

{

bzero(buf,sizeof(buf));

printf("等待读取数据.......\n");

connfd=accept(sockfd,(struct sockaddr *)client,client_len);

n = read(connfd,buf,sizeof(buf));

write(connfd,buf,n);

printf("读取的数据为:%s\n",buf);

}

close(sockfd);

return 0;

}

?php

$server_ip="127.0.0.1";

$port = 8000;

if($_POST['submit'])

{

$buf=trim($_POST['buf']);

$sockfd=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)or die("创建失败");

socket_connect($sockfd,$server_ip,$port)or die("连接错误");

socket_write($sockfd,$buf,strlen($buf))or die("写入错误");

$a=socket_read($sockfd,80);

echo $a;

$buf="";

socket_close($sockfd);

}

?

form action="tcpclient.php" method="post"

请选则发送方式:brinput type=text name="buf"

input type=submit name="submit" value="发送"

/form

tcp方式不能通信解决方法

执行:getsebool -a |grep http

查看httpd_can_network_connect -off 是否为打开状态

执行:setsebool httpd_can_network_connect on 把httpd_can_network_connect设置为打开状态

tcp方式不能通信解决方法

执行:getsebool -a |grep http

查看httpd_can_network_connect -off 是否为打开状态

执行:setsebool httpd_can_network_connect on 把httpd_can_network_connect设置为打开状态

PHP的tcp/ip怎么与C语言的tcp/ip相互通信?

包括对各种流数据的读和写:内存流、网络流或文件流。当然,通过NSStream也可以与服务器进行通信。 无论是通过NSStream向服务器写数据,还是从NStream对象中读取服务器数据,都是一件简单的事情。 在Mac OS X中,使用NSHost和NSStream与服务器进行连接的代码如下: NSInputStream *iStream; NSOutputStream *oStream; uint portNo = 500; NSURL *website = [NSURLURL

求解php和c语言的进程间通信能兼容吗

PHP是比较流行的脚本语言,WEB开发使用广泛,如何在C++程序中不依赖任何WEB SERVER调用PHP,并取得执行结果完成交互。

PHP安装好后,在目录下有一个php-cgi.exe,我们只要执行这个CGI程序,并将数据通过命名管道传递给它,然后把执行结果通过命名管道读取出来即可,过程并不复杂!请看如下代码:

命名管道的创建:

SECURITY_ATTRIBUTES sa = {sizeof(SECURITY_ATTRIBUTES)};

sa.bInheritHandle = 1;

sa.lpSecurityDescriptor = NULL;

HANDLE hStdoutR, hStdoutW, hStdinR, hStdinW;

CreatePipe(hStdoutR, hStdoutW, sa, 0);

SetHandleInformation(hStdoutR,HANDLE_FLAG_INHERIT, 0);

CreatePipe(hStdinR, hStdinW, sa, 0);

SetHandleInformation(hStdinW, HANDLE_FLAG_INHERIT, 0);

启动php-cgi进程: STARTUPINFO si = {sizeof(STARTUPINFO)};

PROCESS_INFORMATION pi;

si.dwFlags = STARTF_USESTDHANDLES;

si.hStdOutput = hStdoutW;

si.hStdInput = hStdinR;

char env[255] = "REQUEST_METHOD=POST\0CONTENT_LENGTH=18\0CONTENT_TYPE=

application/x-www-form-urlencoded\0SCRIPT_FILENAME=D:\\test.php";

if(!CreateProcess(NULL, "d:\\php5\\php-cgi.exe D:\\test.php",

NULL, NULL, 1, NORMAL_PRIORITY_CLASS, env, NULL, si, pi))

return 0;

CloseHandle(hStdoutW);

CloseHandle(hStdinR);

传递数据:if(!WriteFile(hStdinW, "var=Hello VCKBASE!", 18, dwWritten, NULL))

return 0;

CloseHandle(hStdinW);

读取返回数据:char buf[1000] = {0};

DWORD dwRead = 0;

while(ReadFile(hStdoutR, buf, sizeof(buf), dwRead, NULL) dwRead != 0){

printf(buf);

}

CloseHandle(hStdoutR);

D盘的test.php

?

echo $_REQUEST["var"];

?

执行结果:

X-Powered-By: PHP/5.3.1

Content-type: text/html

Hello VCKBASE!

实际上,C++调用其他CGI程序,例如PERL,方法也大同小异,如果你打算做一个自己的WEB服务器,调用CGI程序是少不了的。

php和c通讯问题怎么办的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php和c通讯问题怎么办解决、php和c通讯问题怎么办的信息别忘了在本站进行查找喔。

本文转载自互联网,如有侵权,联系删除