使用套接字通信按钮单击事件

时间:2013-08-24 02:24:49

标签: php apache sockets ubuntu websocket

欲望: 我有一个设备或微控制器,我将其称为mc,当使用套接字点击网页按钮时,我需要与之通信。

MC1
<button id ='on1' name='mc1'>On</button>
<button id ='off1' name='mc1'>off</button>

详细信息: 我想要完成的是当点击一个按钮时将信息传递给mc。

我尝试过的事情: 目前,我可以侦听端口,并可以将数据写入mc以及接收数据。 要做到这一点我通过服务器php cli启动文件。该文件包含这些基本套接字函数。

 $socket = @socket_create_listen("port#");
 $client = socket_accept($socket);
 socket_write($client, $msg);
 socket_read ($client, 256);
然后,mc连接到端口#

的服务器

问题: 我很难理解如何弥合我的php网页与按钮之间的差距,并将按钮被点击的数据传递给mc。

尝试解决方案: 我可以拥有侦听端口运行的文件,然后在单独的文件中写入客户端吗?

附加说明:MC LAN我想避免设置端口转发,外部IP有时会发生变化。出于这些原因,我选择让MC建立与服务器的连接,从而允许服务器写入MC而无需端口转发和不变的IP地址。

由于 JT

2 个答案:

答案 0 :(得分:1)

最简单的方法是创建一个在Web服务器(如apache,但无论如何)中运行的简单程序(php很好)。无论何时调用它,它都会同步打开MC的套接字并发送数据。

您不会编写任何代码来打开侦听套接字,但您的php会使用socket_connect打开一个客户端套接字到MC,发送数据,然后关闭套接字..然后您可以返回状态回到网络客户端。

答案 1 :(得分:0)

基于以下假设:您的Web服务器无法直接打开与MC的连接,并且您的MC只能创建与静态IP的出站连接。你想在你的php cli代码中有一个循环,请参阅http://www.php.net/manual/en/function.socket-read.php#73509 - 将usleep (1000000);更改为sleep(1);,并在sleep命令之后,检查数据库(或文件的存在)是否有任何消息应该发送给MC。然后在您的前端php脚本(html)上,当用户POST返回按钮单击时,您可以写入数据库或创建文件。