最为常见网络聊天室编写源码Word格式.docx

上传人:b****3 文档编号:16379631 上传时间:2022-11-23 格式:DOCX 页数:20 大小:93.17KB
下载 相关 举报
最为常见网络聊天室编写源码Word格式.docx_第1页
第1页 / 共20页
最为常见网络聊天室编写源码Word格式.docx_第2页
第2页 / 共20页
最为常见网络聊天室编写源码Word格式.docx_第3页
第3页 / 共20页
最为常见网络聊天室编写源码Word格式.docx_第4页
第4页 / 共20页
最为常见网络聊天室编写源码Word格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

最为常见网络聊天室编写源码Word格式.docx

《最为常见网络聊天室编写源码Word格式.docx》由会员分享,可在线阅读,更多相关《最为常见网络聊天室编写源码Word格式.docx(20页珍藏版)》请在冰豆网上搜索。

最为常见网络聊天室编写源码Word格式.docx

图2-1系统模块结构图

2.3模块设计

1.服务器模块

服务器模块主要完成接收并处理用户登录申请,转发登录用户发送的消息、启动聊天服务、关闭聊天服务和踢开指定用户功能。

该模块应包括三个子功能模块:

处理用户登录申请功能、转发用户消息功能、聊天室管理功能。

模块功能树如图2-2所示。

图2-2服务器模块功能树图

2.客户端模块

客户端模块为用户提供聊天室操作界面,用户通过客户端可以发送消息给全部或指定的其他用户,可以看到聊天内容,可以看到聊天室内有哪些用户在线。

客户端模块功能树如图2-3所示。

图2-3客户端模块功能树图

2.4系统流程描述

系统主体的处理流程如图2-4所示。

图2-4系统主体处理流程图

系统客户端和服务器的主体处理流程如图2-5和图2-6所示。

图2-5客户端处理流程图

图2-6服务器处理流程图

2.5界面设计

界面设计应遵循简洁美观、方便易用的基本原则。

1.服务器界面设计

具体服务器界面设计效果图如图2-7所示。

图2-7服务器界面设计效果图

2.客户端界面设计

登录界面设计效果图如图2-8所示,客户端主体界面设计效果图如图2-9所示。

图2-8客户端登录界面设计效果图

图2-9客户端界面设计效果图

3详细设计

基于系统需求分析与系统总体设计的结论,本系统采用Delphi7实现各模块的功能,下面按照模块的划分来分别阐述系统的详细设计和实现过程。

3.1服务器模块

1.功能描述

接收并处理客户端的登录请求,并根据客户端的聊天请求向指定客户端转发聊天内容,同时提供聊天室用户管理和服务管理功能。

2.IPO图

输入:

客户端请求消息

处理:

①启动服务器服务;

②等待接收客户端请求;

③根据客户端请求类型,做不同处理;

④将处理结果发送给客户端。

输出:

发给客户端的应答消息

3.函数/过程设计

过程1:

startClick()

声明:

procedureTdmMain.startClick(Sender:

TObject);

功能:

启动服务器的聊天服务。

IPO图:

①判断服务器服务进程状态,如果服务已经启动则过程结束,否则进入下一步;

②设置服务器服务进程的Socket端口号为2345;

③启动服务器服务进程;

④在界面显示服务启动提示信息。

服务器启动信息

程序清单:

begin

ifServerSocket_Chat.Active=falsethen

begin

//设置服务器服务进程的Socket端口号

ServerSocket_Chat.Port:

=2345;

//启动服务器服务进程

ServerSocket_Chat.Active:

=true;

//在界面显示服务启动提示信息

ServerStatus.Lines.add(datetostr(date)+'

'

+timetostr(time)+'

:

'

+'

服务启动'

);

end

end;

过程2:

stopClick()

procedureTdmMain.stopClick(Sender:

关闭聊天室聊天服务。

无。

①判断服务器服务进程状态,如果服务已经关闭则过程结束,否则进入下一步;

②关闭服务器服务进程;

③在界面显示服务关闭提示信息。

聊天室关闭信息

ifServerSocket_Chat.Active=truethen

//关闭服务器服务进程

=false;

//在界面显示服务关闭提示信息

关闭'

过程3:

ServerSocket_ChatClientRead()

procedureTdmMain.ServerSocket_ChatClientRead(Sender:

TObject;

Socket:

TCustomWinSocket);

接收并处理客户端请求。

①获取客户端发送的请求消息;

②解析请求消息;

③根据请求消息类型做不同的应答处理。

各项游戏初始化数据。

varstrReceive,strCom,strContent,strNick,strFriend:

string;

n,i:

integer;

newItem:

TListItem;

//获取客户端发送的请求消息

strReceive:

=Socket.ReceiveText;

//解析请求消息

n:

=pos('

~'

strReceive);

ifn>

0then

//获取请求指令类型

strCom:

=copy(strReceive,1,n-1);

//处理客户端的广播聊天请求

ifstrCom='

public'

then//public~content

//获取聊天内容

strContent:

=copy(strReceive,n+1,length(strReceive)-n);

//构造消息应答,并将应答消息发送给所有在线客户端

fori:

=0toServerSocket_Chat.Socket.ActiveConnections-1do

ServerSocket_Chat.Socket.Connections[i]

.SendText('

talk~'

+strContent);

end;

//处理客户端的私聊请求

private'

then//private~nick~nick~content

//获取请求内容

//获取消息发送者昵称

strNick:

=copy(strContent,1,pos('

strContent)-1);

=copy(strContent,pos('

strContent)+1

length(strContent)-pos('

strContent));

//获取消息接收者昵称

strFriend:

//获取消息内容

//构造消息应答,并将应答消息发送给消息接收者

ifUserList.Items.Item[i].Caption=strFriendthen

//处理客户端的登录服务器请求

request'

then//request~nick

//获取登录用户昵称

//检查是否存在重名用户,如果有则返回错误应答消息

=0toUserList.Items.Count-1do

ifUserList.Items.Item[i].Caption=strNickthen

ServerSocket_Chat.Socket.Connections[UserList.Items.Count]

err~'

+strNick);

exit;

//将登录用户添加到在线用户列表

newitem:

=UserList.Items.insert(UserList.Items.count);

newitem.caption:

=strNick;

newitem.SubItems.Add(socket.RemoteAddress);

newitem.SubItems.Add(socket.RemoteHost);

AllUserList:

=AllUserList+'

+strNick;

//向所有在线用户广播用户登录消息

add'

+AllUserList+'

过程4:

ServerSocket_ChatClientDisconnect();

procedureTdmMain.ServerSocket_ChatClientDisconnect(Sender:

处理用户离开情况。

①在用户列表中删除离开用户;

②重新构造在线用户名单;

③向所有在线用户广播用户离开指令和在线用户名单。

vari:

isDel:

boolean;

//清空在线用户名单

='

;

//在用户列表中删除离开用户

=0toUserList.Items.count-1do

ifnotisDelthen

ifsocket.RemoteAddress=UserList.Items[i]

.subitems[0]then

=UserList.Items[i].caption;

UserList.Items.Item[i].Delete();

//重新构造在线用户名单

+UserList.Items[i].caption;

//向所有在线用户广播用户离开指令和在线用户名单

del~'

+strNick+AllUserList+'

过程5:

KickClick()

procedureTdmMain.KickClick(Sender:

将管理员指定用户从聊天室中踢开。

①判断当前是否选中需要踢开的用户;

②如果有选中的用户,将选中用户的Socket连接关闭;

//判断当前是否选中需要踢开的用户

ifUserList.ItemIndex>

=0then

//将选中用户的Socket连接关闭

ServerSocket_Chat.Socket.Connections[UserList.ItemIndex].Close;

3.2客户端模块

为聊天用户提供聊天操作界面,主要是向服务器发送聊天请求,并根据服务器的应答进行不同的处理。

用户操作

①登录聊天室服务器;

②根据聊天要求构造请求消息,并向服务器发送;

③解析服务器的应答消息,并进行相应处理。

提示消息和聊天内容

bnt_loginClick()

procedureTMainForm.bnt_loginClick(Sender:

登录聊天室服务器。

①启动登录窗口,等待用户输入服务器IP地址和用户昵称;

②初始化Socket通讯配置;

③建立Socket连接。

//创建并显示登录窗口

iflogin=nilthen

login:

=TLogin.Create(nil);

login.ShowModal;

//当用户选择登录后,根据用户设置的服务器IP地址和昵称登录服务器

iflogin.isOkthen

//设置聊天室服务器服务的Socket端口号

clientsocket1.Port:

//设置聊天室服务器服务的IP地址

clientsocket1.host:

=login.Edit1.Text;

//建立Socket连接

clientsocket1.active:

MyName:

=login.Edit2.Text

ClientSocket1Connect()

procedureTMainForm.ClientSocket1Connect(Sender:

Socket:

向聊天室服务器发送登录请求。

①向聊天室服务器发送登录请求;

②等待服务器应答。

登录请求消息

//向聊天室服务器发送登录请求

clientsocket1.Socket.SendText('

request~'

+MyName);

ClientSocket1Read()

procedureTMainForm.ClientSocket1Read(Sender:

Socket:

接收服务器应答消息,并进行处理。

应答消息

①获取服务器应答消息;

②解析应答消息;

③根据应答消息类型进行处理。

varstrReceive,strCom,strContent,strUser:

//获取服务器应答消息

=socket.ReceiveText;

//解析应答消息

=copy(strReceive,1,pos('

strReceive)-1);

strUser:

//根据应答消息类型进行处理

//应答消息为新用户进入聊天室

then

//重新构造用户列表

UserList.Clear;

UserList.Items.Add('

大家'

UserList.ItemIndex:

=0;

=copy(strReceive,pos('

strReceive)+1

length(strReceive)-pos('

strReceive));

repeat

=copy(strContent,1,pos('

UserList.Items.Add(strUser);

untilstrContent='

//更新聊天室聊天内容

Chat_Content.Lines.Add(UserList.Items

.Strings[UserList.Items.count-1]+'

进来了,大家欢迎!

//应答消息为用户离开聊天室

del'

//更新聊天室用户列表

//更新聊天室内容

Chat_Content.Lines.Add(strUser+'

离开了...'

strContent:

length()-pos('

//应答消息为聊天内容

talk'

//更新聊天室内容显示

Chat_Content.Lines.Add(strContent);

//应答消息为登录错误

err'

//提示用户错误

showmessage('

<

+strContent+'

>

这个昵称已经存在,请换一个登录!

=inputbox('

重新输入'

'

请输入昵称'

大力水手'

untiltrim(strUser)<

//重新发送登录请求

+strUser);

sendClick()

procedureTMainForm.sendClick(Sende

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1