请教关于服务器push的技术(200分)

  • 主题发起人 主题发起人 aero
  • 开始时间 开始时间
A

aero

Unregistered / Unconfirmed
GUEST, unregistred user!
各位,我想在用服务器push的方式在网页上显示一段文字,但是文字的内容是在后台的数据库中,而且是随时生成的,我知道应该用
content-type:multipart/x-mixed-replace ,我这里有用C写的源程序,只是HTML该怎么写?
 
>在网页上显示一段文字
当用户访问服务器时就可以显示,(把 HTML 传给用户)
不需要使用 Push 技术吧?
我理解中的 Push 是服务器通知客户段某些事情,
客户段根据所通知的讯息进行响应,
例如说,弹出一个对话框,
或是自动访问某个地址,
或是生成某个文件,并打开它?

所知有限,请勿奸笑?
 
完全用HTML可能会比较困难,
你看这样可否:
网页上显示一段文字做成单独的帧,然后不停的定时刷新这一页,
定时刷新这一页我想你是自己会的.

 
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=211454
 
我还是把C源文件贴出来吧,那位有时间试试
#include <condefs.h>
#pragma hdrstop


//---------------------------------------------------------------------------
#pragma argsused
#include <windows.h>
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
#include <jpeg.hpp>

int printImage(char *FileName)
{
TJPEGImage *Jpg = new TJPEGImage();
TMemoryStream *S = new TMemoryStream();

try
{
Jpg->LoadFromFile(FileName);
try
{
Jpg->SaveToStream(S);
S->Position = 0;
fwrite(S->Memory,S->Size,1,stdout);
}
__finally
{
&S->Free;
}
}
__finally
{
&Jpg->Free;
}
fflush(stdout);
return 1;
}

void main()
{
TJPEGImage *Jpg = new TJPEGImage();
TMemoryStream *S = new TMemoryStream();
char *filenames[]={
"d://share//kangxi//images//gxinbar-1on.JPG",
"d://share//kangxi//images//gxinbar-2on.JPG",
"d://share//kangxi//images//gxinbar-3on.JPG",
"d://share//kangxi//images//gxinbar-4on.JPG",
"d://share//kangxi//images//gxinbar-5on.JPG"
};
setvbuf(stdout,NULL,_IONBF,0);
printf("Content-type: multipart/x-mixed-replace;boundary=BoundaryString/n/n");
printf("--BoundaryString/nContent-type:image/jpeg/n/n");
if(printImage(filenames[0])==-1)
return;
printf("/n");
for(int x=1;x<5;x++)
{
printf("/n--BoundaryString/nContent-type:image/jpeg/n/n");
fflush(stdout);
Sleep(4500);
if(printImage(filenames[x])==-1)
return;
printf("/n");
fflush(stdout);
}
Sleep(4500);
printf("/n--BoundaryString--/n/n");
}
 
cAkk:你介绍的哪个网站是用Servlett实现的,我是想用CGI来实现的呀,不过还是很谢谢你介绍的网站,很有用
 
CGI / Java Sevlet 原理上差不多
本论坛的聊天室用的是 ASP 也实现了 push
 
这里的聊天室叫pull才对,真正的push是在保持连接的基础上由服务端自动向客户端发送信息
也就是说,客户端只用第一次request,服务器就会一直发送最新信息直到连接断开(在这中间客户端不用再request)。
目前我只能用socket实现。
cakk兄:我试过过用cgi实现上述功能,但是cgi不能判断用户是否终止了连接,也就是说:当连接断开后cgi还是在老老实实的运行(用无限循环发送消息),我拿它无法。
我还没有试过isapi,估计效果相似,总之用这一类的方法实现比用socket实现要麻烦的多。

 
频道技术的应用:<br><p></p><br>
频道技术也被称为推技术(Push Technology),使用此项技术可以将内容直接发送
给浏览者,而不是等待浏览者的到来。这就象是大家在收看电视节目,只要你打开电视就
可以看到各个频道的节目,而当你关闭电视的时候,节目的信号仍在传送,在浏览者上网
时自动接收自己在一个站点中订阅的指定内容,或下线浏览或将其做为桌面布景的一部分。
Internet Explorer 4.0的用户是此技术的首先受益者,他们可以在屏幕上的多
个小区域中浏览从网络上订阅的股市的行情、最新的电脑报价、体育比赛的结果……<br>
<p></p><br>怎么样想不想让自己的站点也拥有打量的订阅者呢?哈,现在我就告诉你这一
切用FrontPage98来完成是多么的简单。<br><p></p><br>1、 在制作频道之前还必需
要一些准备工作。首先你要做的是考虑好你要象大家发放的内容(比如说用频道来象订阅
者发送新闻或是更新报告等等)另外你还要至少准备一个80×32象素GIF格式的图象做频道
的按钮。(另外你还可以再做一个16×16象素GIF格式的图象用来标识频道页面中的图标。)
<br><p></p><br>2、 启动浏览器选择“工具”菜单中的“制作频道”,弹出入下的
窗口选择“Create a new Channel Definition Format 
file for the current FrontPage web”创建新的频道。完成
后点击“下一步”<br><p></p><br>3、 在Title、Abstract中填写频道的标题和简单
介绍,然后输入要介绍的页面(Introduction Page)和图标(Image Icon)的
绝对地址。完成后点击“下一步”。<br><p></p><br>4、 输入频道源文件夹的绝对
地址,完成后点击“下一步”。<br><p></p><br>5、 在文件夹中选择出没有用的内
容,完成后点击“下一步”。<br><p></p><br>6、 给每一页设置属性。其中Page 
Cache表示使用缓存的设定,如果选择了“Don't Use Cache”后将意味着订阅者
将不能离线浏览。另外在Usage项中有两大项,使用“Specify Usage”则可以依次选
择是否将页面做为频道列表出现;是页面更新时否用E-mail通知订阅者;是否将页面做为
屏幕保护程序;是否让订阅者在屏幕上用一下窗口浏览。但如果你选择了“Hidden”时将
不能选择以上各项并且还可以使订阅者不能通过频道上的超级连接访问。设置完所有页面
的属性后点击“下一步”。<br><p></p><br>7、 根据提示设置订阅者检测频道的周
期。(此项要根据自己的实际情况设计,不要好高骛远。)完成后点击“下一步”。<br>
<p></p><br>8、 如果你愿意意了解订阅者都浏览过什么连接或想从浏览者处得到更
多的信息可以创建一个表格处理器并在此输入该处理器的绝对地址。<br><p></p><br>9、
 将以上的设置保存在一个格式为CDF的文件中(你可以用文本浏览器打开并编辑它)
,并在页面上创建一个超级连接指向该文件。<br><p></p><br>到此为止一个属于你自己的
频道已经完成了,如果你觉得有什么不满意的地方可以重复第二步的工作,选择“Open 
An Existing Channel Definition File”修改即可。
 
aero:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
多人接受答案了。
 
后退
顶部