我希望设置一个可以与在本地XAMPP服务器上运行的index.php文件通信的C客户端。
所有在线教程都基于创建C客户端并连接到C服务器。但是如何将C客户端连接到xampp服务器上的PHP文件?
我是否需要在C客户端和使用PHP中的套接字的index.php文件中打开套接字?或者我可以在C程序中打开一个套接字并将其指向localhost / index.php吗?
C客户端将侦听来自托管index.php的服务器的HTTP消息。 index.php文件将包含一个html表单,我可以在其中输入一个句子,然后C程序将该句子打印到计算机终端。
是否可以将C程序连接到服务器。然后使用index.php表单中的exec()命令作为POST请求,并通过套接字将其发送到C程序?
任何帮助或已知文章都会很棒。
谢谢
答案 0 :(得分:3)
您可能没有与PHP文件进行通信,但是某些Web服务器运行该PHP程序(例如Apache,XAMPP的一部分)来处理某些HTTP请求。花几个小时或几天阅读约HTTP(您需要了解一些细节,并了解HTTP requests,回复,headers,cookies等等... )。 HTTP协议的原因(您的C应用程序应该提供哪种HTTP请求?)。用你的浏览器查看它发送的HTTP请求。
然后,您想要使用的是C中的一些HTTP客户端库,例如libcurl。
(还要注意C中存在HTTP服务器库,例如libonion;您可能不需要这样做)
也许websockets对你有用,但可能不是。
C客户端将侦听HTTP消息
如果C程序正在监听(使用Berkeley sockets,使用某些listen(2)或系统上的等效项,则它不是客户端而是服务器。如果它是客户端,它将发出 HTTP 请求 - 使用connect(2)& send(2) - (并处理相应的HTTP 响应),您最好使用一个库(如libcurl
)(因为详细信息,HTTP是相当的)复杂的),它将处理低级别的详细信息,例如connect
,send
,recv(2)等......以及您所在位置的缓冲。
index.php文件将包含一个html表单
这通常意味着一些POST
request。细节取决于<form
HTML element。
答案 1 :(得分:0)
这取决于你真正想要实现的目标,即你将c程序“连接”到index.php
是什么意思?
你应该意识到的第一件事是我们在这里讨论的是两个过程:(a)c程序和(b)执行PHP脚本的任何解释器(可能是Web服务器)。
您希望在两个进程之间交换数据,因此我们讨论进程间通信。
在Wikipedia article中,您会看到一个列出多种方式的表格:
文件:您的PHP脚本可以写入文件,从中读取c程序(或者,在Unix下,管道更适合)
套接字:正如您已经提到的,其中一个程序可以通过套接字建立连接,并通过此连接交换数据。
由于您的PHP脚本可能在Web服务器中运行,因此套接字解决方案很有希望: Web服务器已经侦听传入连接,并提供了一个很好的协议来交换数据: HTTP 。
我不会重复Basile的回答,而只是举例说明如何使用CGI与Web服务器交换c程序和PHP脚本之间的一些数据:
Web服务器提供一个URL,用于调用PHP脚本,如http://test.me/test.php
。
现在,程序将是:
c程序通过以
的形式发送文本来发送 HTTP GET 请求 GET /test.php?a=31&b=19 http/1.1
服务器将调用index.php,为其提供键值对a = 31,b = 19
该脚本将执行操作,并将内容打印到stdout,如:
abc
(这不是一个有效的HTTP响应,但它足以一般地扫描程序)
abc
的输出。如您所见,在此示例中,您转移了
abc
从web server / index.php到c程序通常,最佳解决方案取决于您想要完成的任务。我假设你的例子只是一个例子,你可以按我上面的方式解决它。但是,如果你真的只想在你的控制台上打印一些东西,只需让你的index.php将它写入文件/管道并且c程序读取文件......
这种方式或其他方式,我觉得你有很多东西需要探索......
此外,我想澄清最后一件事: 我为了简单起见使用了'c program',但我不需要成为一个c程序,但是你的问题引用了一个任意的进程,它也可能是python解释器运行的python脚本或...