.
.
利用上述对象可以实现服务器的各种功能,当然,还可以再加入新控件,以使界面更美 观。
服务程序中三个关键程序段如下:
1.处理连接请求
sckServer_ConnectionRequest过程处理连接请求,当远程计算机要求连接时,服务器首先 检查用户自定义数组中是否有空闲位置(因为在谈话中途,肯定会有人退出,所以会产生空闲 位置),如果有则选择空闲位置给予要求连接的客户,否则将数组维数加一,将之给予请求连 接的远程节点。错误处理主要是忽略两个或两个以上的客户同时要求连接时产生的地址冲突 现象。
......
2.处理处于连接状态的用户发送来的信息
sckServer_DataArrival过程处理客户端传来的数据。当有数据发送过来后,服务器首先接 收数据,调用自定义过程HandleOtherMessage检查是谈话内容还是其它信息,如果是其它信 息,则在HandleOtherMessage中进行处理,否则在本过程中进行处理。
因为Winsock 控件将数据首先送至缓冲区,待缓冲区满才发送信息,这显然不能保证适时对话,用Doevents 语句可确保Windows将数据及时送出。其中的错误处理程序处理当远程计算机非正常关闭程 序时产生的错误,因为此时服务器并不知道它已关闭,仍然向它发送信息,这样就会产生错误, 导致服务程序关闭,中断整个谈话。处理方法只是简单地关闭掉该连接即可。
... ...
3.关闭客户连接
sckServer_Close过程关闭与客户的连接, 删除控件,收回系统资源,将该位置的连接状态设置为假,以便有用户请求连接时继续使用。 它一般由HandleOtherMessage过程调用
......
如何保证聊天 内容的健康是一个很重要的方面,在Internet上,我们对谈话内容不健康者,只有将之开除出 聊天室。但在局域网上则可以查出是谁谈话不文明(局域网环境为WindowsNT4.0服务器,Windows 95工作站)。方法如下:在95工作站上将网络中的TCP/IP协议中的IP地址选项设为动态获得IP 地址,在NT服务器上用DHCP管理工具为每一个客户机进行IP地址动态分配。聊天服务程序记 录下来了每一个客户的IP地址,我们就可以通过DHCP管理工具很容易地查出某IP地址对应的 计算机名,并进行处理。
客户程序部分
客户程序启动时首先设置服务器 的地址及端口,这里我直接使用了“192.168.0.2”,这是我的服务器地址,可以在Form_load过 程中设置你自己的服务器地址,也可在程序开始时让用户输入服务器地址以增加灵活性。时 钟控件用以与远程节点进行自动连接。
[责任编辑:editor]
最新相关文章
发表评论