- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WEB聊天室的四种实现方案及其比较一基于ActiveX的聊天室
WEB聊天室的四种实现方案及其比较一、基于ActiveX的聊天室?一、基于ActiveX的聊天室
基于ActiveX的聊天室其实现过程类似于前文所述的Java聊天室。在返回给客户端的HTML页面里插入ActiveX控件,该ActiveX控件与Web服务器上运行的专用聊天服务程序进行连接,当客户端用户输入新发言时,发言被传送到聊天服务器并由其广播。和Java Applet一样,ActiveX控件实现了实时聊天。
在网页上使用ActiveX比用Java Applet具有更快的速度和更大的灵活性。因为ActiveX控件下载后,不需要虚拟机解释而是直接执行,如同本机上的应用程序一样。在网页中你可以嵌入各种ActiveX控件(如数据表格、多媒体、图形图象、压缩加密等等),可以方便的将传统应用程序轻松的移植到Intranet/Internet上。它所能实现的功能远远超过现有的各种动态网页技术,包括DHTML、CGI、ASP等。不过话又说回来,由于ActiveX能够存取客户机的所有资源,所以安全性成为该技术流行开来的最大障碍。当下载的网页中包含ActiveX控件时,浏览器用户必须确认该控件带有可以信赖的公司的电子签名,才敢放心执行。ActiveX的另一缺陷是它只能运行于Windows平台,而且只同IE浏览器配合较好,对于Netscape的用户来说,必须下载专门的PlugIn才能查看ActiveX网页。
我们使用Visual Basic 6来实现聊天服务器和客户端的ActiveX控件。
(1)聊天服务器的编写
新建一个工程,类型为标准EXE,名字为prjChatServer,将主Form名字改为frmServer,其上放置的控件有:
txtLog,类型TextBox,属性MultiLine=True??ScrollBars=Vertical
sktChatServer,类型?Winsock,属性?Index=0
cmdExit,类型?CommandButton
txtLog用于显示各客户连接信息,sktChatServer为Winsock控件数组,用于处理与各客户的TCP/IP连接,cmdExit按钮则用于退出系统。
在frmServer的代码窗口中加入以下代码:
Option Explicit
Private Const LISTEN_PORT As Integer = 1888??监听端口号
Private Type ActiveClient_Type
????Connected As Boolean???是否在连接状态
????ClientIP As String???????客户端的IP地址
End Type
Private gClients() As ActiveClient_Type??存储所有连接的聊天用户
Private Sub AddLog(sMess As String)??显示信息
????txtLog.Text = txtLog.Text + sMess + Chr(13) + Chr(10)
End Sub
Private Sub cmdExit_Click()
????Unload Me
End Sub
Private Sub Form_Load()
????ReDim gClients(0)
????sktChatServer(0).LocalPort = LISTEN_PORT
????sktChatServer(0).Listen???启动服务器
????AddLog 聊天服务器启动,端口号为 + CStr(LISTEN_PORT) + ...
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
????Dim i As Integer
????退出时断开所有的连接
????For i = 1 To UBound(gClients)
????????If gClients(i).Connected Then
????????????sktChatServer(i).Close
????????????Unload sktChatServer(i)
????????End If
????Next
End Sub
Private Sub sktChatServer_Close(Index As Integer)
????AddLog sktChatServer(Index).RemoteHostIP + ( + CStr(Index) + ) + ?离开了聊天室.
????sktChatServer(Index).Close
????Unload sktChatServer(Index)
???
文档评论(0)