操作系统:windows
web服务器:apache+mysql+php
背景:
1、已用C语言写好一个C/S的服务端的可执行程序,该服务端创建一个socket并绑定特定端口(比如6000),等待新连接到来进行数据通信。
2、如今想在web服务器中用php编写一个基于socket的页面,建立一个客户端的socket连接,来连接C/S的服务器,向C/S服务器发送指令和数据,触发C/S服务器来执行某些操作,借此来实现B/S和C/S的通信(举个例子,qq原本是C/S结构,现好比好比网页版的qq向C/S结构的qq服务器发数据)。
现有几个问题不明:
1、该方法是否可行?(毕竟网上很少见到B/S和C/S通过socket通信)
2、如可行,那每个客户端通过浏览器或其他途径执行该php页面,相对于可执行程序而言,是不是就要创建一个新连接(要是客户不断刷新页面,那服务器不是很快就要崩溃,在不改变原C/S服务器的前提下,如何实现对客户端的限制)。
3、现在看到很多动态页面通过在浏览器中里操作非web内容,比如页面中设个关机按钮,通过点击该按钮,来关闭一个指定的主机,或者整个页面类似于资源管理器操作,或者执行一些特殊运算等等。不知道这些是不是通过客户端请求服务器后调用某些B/S的可执行程序来实现的。
web服务器:apache+mysql+php
背景:
1、已用C语言写好一个C/S的服务端的可执行程序,该服务端创建一个socket并绑定特定端口(比如6000),等待新连接到来进行数据通信。
2、如今想在web服务器中用php编写一个基于socket的页面,建立一个客户端的socket连接,来连接C/S的服务器,向C/S服务器发送指令和数据,触发C/S服务器来执行某些操作,借此来实现B/S和C/S的通信(举个例子,qq原本是C/S结构,现好比好比网页版的qq向C/S结构的qq服务器发数据)。
现有几个问题不明:
1、该方法是否可行?(毕竟网上很少见到B/S和C/S通过socket通信)
2、如可行,那每个客户端通过浏览器或其他途径执行该php页面,相对于可执行程序而言,是不是就要创建一个新连接(要是客户不断刷新页面,那服务器不是很快就要崩溃,在不改变原C/S服务器的前提下,如何实现对客户端的限制)。
3、现在看到很多动态页面通过在浏览器中里操作非web内容,比如页面中设个关机按钮,通过点击该按钮,来关闭一个指定的主机,或者整个页面类似于资源管理器操作,或者执行一些特殊运算等等。不知道这些是不是通过客户端请求服务器后调用某些B/S的可执行程序来实现的。
期待更多的解决方案
就像126 邮箱的新邮件提醒都是ajax定时向服务器请求查询并返回。
public $socketConnection;
public $Connection;
public $changed_sockets;
public function __construct($ipAddress,$port){
$this->socketConnection = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$this->Connection = socket_connect($this->socketConnection,$ipAddress, $port);
$this->changed_sockets = array($this->socketConnection);
}
public function sendMsg($msg){
socket_write($this->socketConnection, $msg);
}
public function recv(){
$num_changed_sockets = socket_select($this->changed_sockets, $write = NULL, $except = NULL, NULL);
foreach($this->changed_sockets as $socket) {
$bytes = @socket_recv($this->socketConnection, $buffer, 2048, 0);
return $buffer;
}
}
public function close(){
socket_close($this->socketConnection);
}
}代码短..就没注释了...
这就是为什么 5 楼扯出 flash 的原因 :)
有没有一种解决方案,能够摒除B/S和C/S的“隔阂”,或者有个什么中间的桥梁能够将两者联系起来进行通信,是插件也好,新技术也许,请高手指个方向。