0

0

如何写一个 web 程序和服务器端的一个 exe 程序进行通信?

php中文网

php中文网

发布时间:2016-06-07 08:44:25

|

3594人浏览过

|

来源于php中文网

原创

(1)服务器端的一个exe程序向web程序发送数据,web程序要知被通知的时候再将结果呈现在浏览器上的web页面上。
(2)从浏览器web页面上按下按钮后,要让服务器端的一个exe知道,有些东西变了
ps. web小程序和服务器端的一个exe程序都是我准备编写的。不知道如何下手,以前用php+mysql编过网站,不过感觉这个问题的需求貌似不需要数据库,就是说有人浏览网页,数据的来源都是要询问那个服务器端的一个exe程序才能得到(至于exe从哪里拿数据,web程序就不知道了)。怎么弄呢?听说HTML5有push的技术,能否指点下? 另外 服务器端的一个exe程序是准备用C++编。

需求是这样的:
现在有一个桌面应用程序正在控制一个机械臂,现在希望通过浏览器控制(借由此可以用平板控制了,平板上的浏览器),当然机械臂每一刻的状态,以及具体的控制程序都是由桌面应用程序exe控制的,现在就是不知道服务器如何和这个exe程序通信呢?

沙之丘企业网站程序3.5
沙之丘企业网站程序3.5

沙之丘企业网站程序是一个以asp.net(C#) 4.0 +access进行开发的企业网站源码。主要功能:1、产品、设备、新闻系统2、留言信息直接发邮件到相关部门3、所有链接都以一级目录显示更好的权重4、其他信息扩展,可以增加如:人事招聘,公司介绍,地图,联系我们等5、带有商品和设备的搜索功能6、模板动态化方便扩展模板7、简体繁体选择显示运行环境:windows 2003或者更高windows服务

下载

回复内容:

虽说是要感谢邀请,可首先我还是想吐槽一下:这个需求描述看得混乱不堪哪。我只能按我大致的理解总结一下需求。@Edwin,如果有不对请指出。

现在看来需求大约是这样:某程序有三个组成部分:
  1. 数据源:这个数据源是一个可执行程序,工作在服务器端。它负责从本需求里不可知的来源负责实际操作。
  2. 服务器:这个服务器是web服务器,用来提供网页上的操作接口控制数据源。服务器接受客户端传来的web请求并转换为数据源可以识别的操作。
  3. 客户端:浏览器页面作为客户端将web请求发送到服务器端。每个web请求对应一个数据端的操作。
这里有两个交互,1-2,2-3。我现在的理解是楼主两个都不知道怎么做。@杨帆 的回答完整地覆盖了2-3,但1-2却没有回答。

我对web没概念,所以我大约能回答的是1-2。但是回答之前我们必须继续澄清几个问题:

  1. 数据源。这个程序提供什么样的接口?一般能有的是两种:A:这个程序以服务的形式启动,并通过某个进程间通信技术收发命令(命名管道,socket等等);B:这个程序是一个单纯的命令行,每次执行一次命令行并通过参数确定要具体执行的操作。当然,这里每个类型还有一个变种,即操作发出后是立即返回(代号0),还是等操作真正结束时才返回(代号1),即请求是否被阻塞。所以一共加起来一共是四种接口:A0,A1,B0,B1。
  2. 客户端。客户端是否支持异步提交请求?比如页面上显示一个按钮表示“抬起机械臂”,用户点击后是操作立即返回还是等待机械臂确实抬起之后才返回?
这两个需求搞清楚了才能给方案。大体上需要考虑的问题如下:
  1. 我们必须把数据源认识的请求类型映射为HTTP URL(时尚点叫Restful也可以)。比如“抬起机械臂”被映射为:server.locahost/raise/a,则B类数据源对应的可能是一个命令行 machineArmOp.exe -ID 0 -Action Raise 。
  2. 服务器必须是一个web app,用以分析客户端请求的URL字符串并翻译为数据源认识的操作。基本上几种常用的web服务器端语言都能干这事儿,ASP.NET或PHP或借助web框架的Python。
  3. 如果数据源是A类,也就是说它具备远程通信的能力,那么数据源必须和服务器同时启动。Web app 通过语言能提供的接口和数据源通信。如果数据源是A1,那么还需要一个单独的步骤,即通信发起时最好分在另一个线程或通过select()/poll()防止服务器阻塞。
  4. 如果数据源是B类,也就是说它只是一个命令行,那么Web App需要使用系统提供的接口,比如system(),exec(),CreateProcess()等创建子进程并解析其返回码或标准输出/标准错误的输出信息。同样地,服务器Web app可能需要多线程来处置B1类以防止服务器端阻塞。
  5. 客户端根据其是否需要阻塞,可以使用Ajax。这一点@杨帆 的回答已经很清楚了。
另外一个特殊情况是我们不能排除这样的可能,即我们需要为B1类数据源编写一个包装。这个包装也以服务的形式常驻系统,它负责提供一个协议(socket,命名管道等等)和服务器通信。 看到这么多“exe程序”看得头疼,LZ是做C出身的?但是linux下哪有什么exe。。。

看了半天我大概弄懂了,就是服务器的推技术。
网上这种资料很多,详细的可以google之。

html5时代,web socket可以解决这个问题,但是很显然,现在时机还不成熟。
而在html5之前,普遍的方式是利用不断的pull来模拟。

常用的方式有两种
1.利用不间断的ajax长轮询:在页面建立起一个超时时间很长的ajax连接到服务器,服务器并不返回消息,这个ajax就会被阻塞住,一旦成功返回消息或是超时,就再建立起一个ajax连接,这样就可以模拟出push的效果。
你可以用firebug看看知乎的ajax请求,通知和首页的更新好像都用到了这种方式。

2.利用iframe标签:在页面建立动态的iframe标签,将src指向到一个服务器连接,服务器同样不返回消息,这个iframe就会显示一直在加载,这种也同样可以模拟push的效果。
早年gmail就是这么实现的,不过要处理页面状态条一直显示“正在连接”的问题比较麻烦。

至于你说的(2),就简单了,按下按钮,浮起事件,发送ajax请求。

看你提到了php+mysql,php在处理长连接的问题上是非常不适合的,特别是与apache搭配的时候(因为一次请求,全部清空的特点)。

又看到你标签打了nodejs,是的,nodejs的非阻塞的异步特性在处理长连接的问题上比apache+php合适得多。 猜想LZ从事嵌入式开发,对网络应用不熟悉。如果是的话应该尽量使用现有的网络开发工具,核心代码不超过10行

1、浏览器使用javascript轮询状态和执行命令
setinterval(function(){ jQuery.get('/status'); }, 100);
jQuery.post('/destroy_the_earth');

2、服务器(例如PHP页面)通过系统命令与桌面程序互动

这个应该用服务端推送技术就行。google之。 用HTML5的web socket应该可以 TCP通信不行吗
exe程序做成server端
web做成客户端 nodejs支持c++的扩展,也很容易做web服务器。 flash 的 XMLSocket 好像也可以

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

32

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

23

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

16

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

5

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

6

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

268

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

195

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

170

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

85

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 5.1万人学习

Django 教程
Django 教程

共28课时 | 3.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号