实时监测(300分)

Z

zaoya

Unregistered / Unconfirmed
GUEST, unregistred user!
小D正在做一个实时监控程序,Client(Brower)发出请求,Server
(NT下一Service)Listering,接到请求,则启动一线程从某监测点取实
时数据,并送回到Client。
若Client每隔1秒发一请求,则Server是否只能做到每次启动一线程
来传送实时数据,传送完成后结束线程,能否做到对一个客户只产生一个
线程,并保持Connection不断开以备下次传输,怎样做?
若Client只发一次请求,则Server要求不断发送实时数据,并能监视
Connection是否正常,如不正常(如断开),则怎样与Client重新connect,
并继续传输数据?这样,是否要定义一个用户协议让Client发断开消息?
是否要用TServerSocket&TClientSocket?如不用,可有什么好办法?
有哪位大侠能给小D一个完整的例子.
很急,先在此谢谢各位大侠的帮助!!!
 
这问题较大,我对这方面不是很熟,
但我知如能完满的解决这个问题我们大家将会从中获益良多。
因此<font color="red">我强烈建议各位大虾来侃侃这个问题</font>
小弟这两天写论文快疯了。实在是没时间。
抱歉!
 
是网络响应还是A/D D/A?
 
如果用传统的CGI/ISAPI好象不行吧
做ActiveX应该可以的。
实在不行,用MIDAS数据库,可以通过DCOM连接,稳定性好
大家继续
 
我觉得应当换一个思路。Server自己定期地更新数据,放在WebServer上。
(如果采样程序跟web server在统一PC上,那就是简单的Copy file,否则
也只需要点对点连接)
client的HTML作成可以自动按时更新的(HTML语法好象支持,至少我见过
这样的主页,怎么写的我可没注意),这样就跟CGI,MIDAS...通通的没关系了。
我以为是最简洁的做法。
 
同意tqz的观点,我觉得这种方法比较简洁而且实用.用postscript来编写
主页应该可以实现的
 
CLIENT发送一个CONNECT消息,SERVER收到CONNECT消息后为CLIENT建立一个线程定
时向CLIENT发消息。当CLIENT发送ENDCONNECT消息后,SERVER结束线程。

SERVER端定时监测线程CLIENT的连接状态,如果连接不正常中断,发消息给CLIENT
让他重新连接,当然CLIENT端的CLIENT程序也应该作成一个服务程序才行。

具体怎样检测连接状态,Dr。Bob有一个BrokenConnect控件,专门做这个事情。
http://www.drbob.com
 
会长,他要的是Brower/Server模式,所以除非用ActiveX,否则不能用您的方式。
 
我向大家可能搞错了,它可能要的是Client/Server模式
browser/server模式是不大可能完成它的要求。
TServerSocket&TClientSocket是可以的。
这方面可以查一下DelphiBBS的已答问题。

我也不多舌了
 
真没注意他是要浏览器上的东西,那就容易多了。只要在CGI/ISAPI生成的动态网页
上加上一个刷新时间就可以搞定。
HTML的刷新(3秒):
〈HTML〉
〈HEAD〉
〈META HTTP-EQUIV="Refresh" CONTENT="3"〉
〈/HEAD〉
。。。
 
Browser上是图形监控,无法直接用Web做到。
小弟的思路是在NT上做一Service来完成这一要求。
Browser每秒发一请求,Server收到后读串口中数据再将其发出,Client收到
后刷新图形。Server用TServerSocket完成。Browser要求用Java Applet完成。
 
浏览器上可以显示WMF图形文件,用METAFILE应该能够作到
 
用NMStrmServ1,NMStrm1这对控件,我大致作了一个差不多的。
在服务器端有一个守护线程,专门用来查看特定端口传来得消息。
并对消息进行区别处理。
但NMStrmServ1,NMStrm1这对宝贝。不能维持连接。而且是不可靠传输。
传输的数据经常出错。

这里有个好奇怪的事告诉大家,我在用UDP时如果对多端进行数据传输,
则只有一端可用。为啥!
望各位大虾不吝赐教!
 
zaoya是不是要做Web方式的DCS?
> Browser每秒发一请求,Server收到后读串口中数据再将其发出,Client收到
你别的思想我都同意,只是这种方式不好。如果Brower很多,那每次Server都响应
要求去读串口怎么能行?而且如果请求之间时间间隔很短,那么重复的读串口也没有
必要。
所以我的建议是Server自己定时读串口数据并放入某个缓冲区,Brower请求时就给他
最新数据。
 
请见告: TServerClientThread的ClientExecute中如何处理客户端的
disconnect,如客户端用Java Applet,用户用完后未disconnect就关
闭browser,这样会导致服务端的异常,怎样处理?
 
各位能再多提一点建议?
 
服务器端不应该费神处理连接中断的问题, 如果发现连接中断就把这个客户踢出去,
if client forgot to send "disconnect" request, then you can cache
it for several minutes.
如果要重新连接的话客户自己应该主动重新建立连接.
 
坛主,能否给一段例子
 
huizhang, 我在你给的站点上没有发现BrokenConnect控件,
能否给出详细地址,或者mail一个给我。先谢了。

我目前做的程序也需要知道连接是否断开,可是我不知道怎样
检测网络是否断开。我现在的做法是:如果很长时间客户端没有请求
则服务器端主动将客户端的连接断开
 
Sorry tubo, the address should be "www.drbob42.com"
 
顶部