Internet上的聊天室一向是一个吸引人的地方,但多用C语言设计,我用VB设计了一个聊 天室,取名为“升达自由论坛”,实际使用证明效果良好。
Internet上的通讯协议是TCP/IP,Internet上数据传输协议主要有TCP和UDP,TCP是有 连接协议,它要求计算机进行对话时必须先建立连接,保证数据传送安全到达目的地。UDP是 无连接协议,它只是将信息送到网络上,并不检查数据是否到达了目的地。要进行实时会话, 则应该采用TCP协议。本程序采用的协议就是TCP协议。
程序分服务和客户程序两部 分。客户程序启动后首先与服务器连接,连接成功后,随意输入一个名字即可进入聊天室;服 务程序则负责维护与每一个客户的连接和数据交换,并且记录下所有聊天内容,及人员名单。 由于在会话过程中大家起的都是假名字,不可避免地要有的人讲一些不健康内容,为了保持 秩序,服务器程序实现了IP地址跟踪功能。管理人员可以很容易地查找出每一个匿名的计算 机名,并对之进行警告或其它处理(下面会进一步介绍)。可保证会话内容的健康。如果服务器 程序关闭,则所有客户程序自动关闭。
VB5的Winsock控件
VB5企业版提 供了Winsock控件,要实现两台计算机的对话,可以通过Winsock控件进行。而不需了解更多的 数据传输细节,本程序就是通过Winsock进行的。
Winsock有多种属性、方法和事件,本文只列举出要使用的属性、方法和事件。
......
一个Winsock控件可以建立与一个计算机的联接,服务器程序中首先 设置一个Winsock控件,将其索引值设为0,以便在运行时动态增减元素,这样可以与多个计 算机进行对话。
程序介绍
服务程序部分
服务器程序启动时, 先设置自己的本地端口,因为有些端口有其固定的作用,如80是WWW端口,故尽可能选择不可 能使用的端口,这里我选择了1600。将连接状态设置为假,然后开始进行侦听。当侦听到有计 算机要求与服务器进行对话,就接受,并记录下客户机的地址、端口、客户起的匿名,将连接状 态设置为真,将上述内容存入一个用户自定义的数组中,进行动态维护。用户自定义数据类型 如下:
PrivateTypeActiveUser
ClientIPAsString记录客户的IP地址
ClientNameAsString记录客户的匿名
ClientPortAsInteger记录当前会话的端口
ClientConnectedAsBoolean
客户连接状态,True表示已连接,False表示没有连接
EndType
做完这些工作后,服务器再调入一个新控件,进行新的侦听,如此反复不断。如果有客户 退出,则关闭相应的连接。注意不能在客户端关闭连接,否则会产生错误,只能由服务器关闭 连接。服务器程序主要对象设置
.
[责任编辑:editor]
最新相关文章
发表评论