Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C http服务器编程_C_Http_Networking_Cometd - Fatal编程技术网

C http服务器编程

C http服务器编程,c,http,networking,cometd,C,Http,Networking,Cometd,我试图将数据从服务器直接推送到客户端的php网页。我在谷歌上搜索了很多次这个问题,我不想使用ajax推送引擎或其他东西,比如Comed(如果你知道我在说什么的话)。我想知道是否有任何方法可以在我的服务器上安装一个程序,将数据发送到所有连接的客户端。我希望这是在C或C++或C语言中完成的,我可以自己编程,如果可能的话,我想。 也许你没有了解HTTP协议是如何工作的。你应该先记录更多关于它的信息。我将尝试解释如何在您的案例中使用它: 轮询:每X秒,客户端将请求包含所需内容的网页。这是使用HTTP的

我试图将数据从服务器直接推送到客户端的php网页。我在谷歌上搜索了很多次这个问题,我不想使用ajax推送引擎或其他东西,比如Comed(如果你知道我在说什么的话)。我想知道是否有任何方法可以在我的服务器上安装一个程序,将数据发送到所有连接的客户端。我希望这是在C或C++或C语言中完成的,我可以自己编程,如果可能的话,我想。

也许你没有了解HTTP协议是如何工作的。你应该先记录更多关于它的信息。我将尝试解释如何在您的案例中使用它:

  • 轮询:每X秒,客户端将请求包含所需内容的网页。这是使用HTTP的标准方式:客户端发送GET,服务器发送响应

  • 推送:每个客户端都会请求一个网页,但服务器实际上会等待您发送消息。您可以使用此http通道“推送”数据:客户机发送GET,服务器等待,直到他有一个要发送的响应

正如您所看到的,我不是在谈论任何语言实现,只是谈论如何偏离HTTP协议来实现您想要的功能。推送方法不好的一面是,即使客户机空闲,也会为X个客户机打开X个套接字。拉式方法不会发生这种情况,在发送响应时,套接字是关闭的

现在,如果您想这样做,您需要从客户端启动连接。这就是“Ajax”部分有用的地方,让我们看看jquery:

$.get('/wait_for_message', function(data) {
    alert('My server send:' + data);
})
您的服务器将收到一个
GET/wait\u for\u消息HTTP/1.1
请求。您可以将此套接字保存在“等待某件事情的客户端”列表中,而不是发回数据。然后,当需要时,您可以遍历这个列表,将数据写入所有套接字,tada:所有客户端都将接收数据


现在,要正确使用这种方法并不容易,这就是为什么你可以像其他人所建议的那样使用另一个项目。

你可以用任何语言编写/修改一个非常简单的web服务器,以格式化和服务数据库中的数据,甚至忽略实际的请求。您所需要做的就是将头和数据写入套接字。您可以通过根据一些列表主动启动连接来做同样的事情。

如果您想使用HTTP进行此操作,那么轮询或comet是您仅有的两个选项。不过,您可以用任何语言实现它们中的任何一种。