华南农业大学计算机网络课程设计报告(2021整理).pdf
《华南农业大学计算机网络课程设计报告(2021整理).pdf》由会员分享,可在线阅读,更多相关《华南农业大学计算机网络课程设计报告(2021整理).pdf(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本文为网上收集整理,如需要该文档得朋友,欢迎下载使用华南农业大学理学院华南农业大学理学院专业年级:学生学号:学生学号:学生姓名:学生姓名:实验题目:指导老师:实验时间:课程实验设计报告课程实验设计报告11 信息与计算科学202130760202130760Socket 应用程序设计2021 年 11 月 1 日-2021 年 11 月 29 日精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用目录1 实验内容和要求.1.1.1.12 实验过程.2.2.2.2.3.4.4.4.6.8.9.10.
2、12.13.202.3.2.1 登录、注册验证功能.20.22.233 实验结果.244 讨论与总结.255 参考文献.256 小组分工.26精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用1 1 实验内容和要求实验内容和要求在学习完 TCP/IP 协议组后,要求掌握基于此协议实现网络通信,理解 TCP与 UDP 的不同特征以及实现方式。基于 Windows 平台建立一个基于 TCP/IP 协议的网络通讯小应用,实验可采用 UDP 或 TCP 实现。1能够进行用户管理,所有用户必须登录到效劳
3、器,有效劳器维护在线信息;2IM 功能:用户登录后能够进行实时多方点到点短信息通信,如聊天;3能够选择要求效劳器进行转发效劳;4能够保存通信记录到数据库SQL Server 或者其他桌面型数据库或数据文件;5能进行双方文件传输,能够显示进度;*6支持断点重传,检查时需有功能随时中断传送,并在下次启动时能显示重传状态;*7数据包加密;*8实时语音双向传送功能;*9多方通话功能;10界面设计要求布局合理,信息清晰。11自加功能。*为选做内容1效劳器能够进行用户管理,所有用户必须登录到效劳器,有效劳器维护在线信息;2IM 功能:用户登录后能够进行实时多方点到点短信息通信,如聊天;3效劳器离线转发功能
4、;4客户端保存群聊天记录;5能进行双方文件传输,能够显示进度;10界面设计要求布局合理,信息清晰。精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用2 2 实验过程实验过程1登陆功能:在用户填写相关的账户和密码时,客户端能够发送连接客户端要求,当,连上客户端的时候,客户端能够将账号和密码信息发送到效劳器进行核对,并返回信心2聊天功能:在客户端中,用户有权选择群聊还是与某在线用户私聊3离线聊天功能:在线的用户可能通过效劳器将信息发给离线的用户4接受离线信息共能:当用户上线时,接收其他用户的离线信息5聊天记录功能:客户端能自动将群聊的信息保存在相应的数据库当中6显示用户状
5、态功能:对于在线的用户和离线的用户能够及时显示在表格当中1维护用户功能:添加新用户,修改用户密码,删除用户2更新用户状态功能:通知客户端更新成员状态和相应的列表3离线功能:为离线用户保存离线信息,并且在用户上线的时发送相应的离线信息4检验用户信息功能:验证用户的账号和密码的正确性,并禁止用户异地同时登陆5显示群聊记录:在效劳器中几时显示群聊的信息精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用1在按下登陆按钮的时候,程序获取界面中的效劳器中IP 地址和端口号,同精品文档,word 文档本文为
6、网上收集整理,如需要该文档得朋友,欢迎下载使用时检验账号和密码是否有误。假设账号和密码填写上没有错误,进行连接效劳器。代码如下:Private Sub Command1_Click()点击登陆按钮Form2.login=False设置能否登陆标志为“不能If Form1.Username.Text=Or Form1.Usercode.Text=Then检查账号和密码填写是否有空MsgBox 请输入账号和密码ElseCall tcpClient_Connect连接效劳器DoEventsIf Form2.tcpClient.State=7 Then假设连接上效劳器那么发送账号和密码Form2.tc
7、pClient.SendData|&*&Form1.Username.Text&*&Form1.Usercode.Text&|*账号*#密码#DoEventsElseMsgBox 没有效劳器End IfTimer1.Enabled=TrueEnd IfEnd SubPublic Sub tcpClient_Connect()If Form2.tcpClient.State 7 ThenDoEventsEnd IfEnd Sub2当连接成功后,发送账号和密码,用相关的已经定义好协议进行封装发送给效劳器。协议是*账号*#密码#代码如下:If Form2.tcpClient.State=7
8、Then假设连接上效劳器那么发送账号和密码Form2.tcpClient.SendData|&*&Form1.Username.Text&*&Form1.Usercode.Text&|*账号*#密码#3当客户端收到的效劳器的协议信息是密码和账号是正确的时候才能进行真正的登录。协议是:当收到*#时,代表登录成功。当收到*ERROR 时,代表没有这账号。当收到#ERROR 时,代表密码错误。当收到*ONLINE 时,代表账号已经登录。精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用代码如下:If InStr(sData,*#)0 Thenlogin=TrueEl
9、seIf InStr(sData,*ERROR)0 ThenMsgBox 没有这账号ElseIf InStr(sData,#ERROR)0 ThenMsgBox 密码错误ElseIf InStr(sData,*ONLINE)0 ThenMsgBox 账号已经登录End If1群聊天。在图 2.2 的文本框中输入字符,便可以发送信息。发送的协议:$群聊天信息$,通过进行过协议封装的聊天信息,能够让效劳器进行识别,别且转发给在线用户。精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用Private Sub cmdSend_Click()If txtOut.Text=The
10、nMsgBox 发送内容不能为空Exit SubEnd IftcpClient.SendData$+Form1.Username.Text+:&txtOut.Text+$=插入聊天记录a=CStr(Now()+Chr(10)+Form1.Username.Text+:+txtOut.Text+Chr(10)Set rs=cn.Execute(insert into data(tcp_data)values(&a&)tcp_data 是表的列名=插入聊天记录rtbIn.Text=rtbIn.Text&Chr(10)+CStr(Now()+Chr(10)+Form1.Username.Text+:
11、+txtOut.Text+Chr(10)txtOut.Text=rtbIn.SelStart=Len(rtbIn.Text)End Sub2发送私聊信息。在 listviews 中点击相应的用户名字就可以进行私聊,在登陆的时候已经设置好 TCP 控件的端口号。代码如下:Public Sub set_privatechat()For i=Private_Chat(i).ClientSer.LocalPort=8080+iNextEnd Sub3接收在线私聊信息。Private Sub ClientCli_DataArrival(ByVal bytesTotal As Long)ClientCli
12、.GetData str,vbStringText1.Text=Text1.Text&strText1.SelStart=Len(Text1.Text)If Me.WindowState=1 ThenTimer2.Enabled=TrueEnd IfEnd SubPrivate Sub ClientSer_DataArrival(ByVal bytesTotal As Long)ClientSer.GetData str,vbStringText1.Text=Text1.Text&str精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用Text1.SelStart=L
13、en(Text1.Text)If Me.WindowState=1 ThenTimer2.Enabled=TrueEnd IfEnd Sub在输入框中输入私聊信息时,先判断是否在线,假设是在线的话直接利用已经和对方连接的 TCP 控件进行发送信息。假设是离线用户的话,利用协议将封装好的离线信息发送给效劳器,在通过效劳器发送给离线的用户。离线信息协议:%*1 发送者账号*1*2 接收者账号*2*$离线的信息*$%代码如下:Private Sub Command1_Click()Dim str As StringIf Len(Text2.Text)=0 ThenMsgBox(发送内容不能为空!)E
14、xit SubEnd Ifstr=str&Chr(13)&Chr(10)&Chr(13)&Chr(10)If ClientSer.State=7 ThenClientSer.SendData strMsgBox 已连接上对方ElseIf ClientCli.State=7 ThenClientCli.SendData strEnd IfIf ClientCli.State 7 And ClientSer.State 7 Then离线信息设置Form2.tcpClient.SendData%+*1+Label2.Caption+*1+*2+Label3.Caption+*2+*$+str+*$+
15、%DoEventsEnd IfText1.Text=Text1.Text&strText1.SelStart=Len(Text1.Text)Text2.Text=End Sub精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用接收离线私聊信息。当收到效劳器的离线信息时,对发送过来的字符串进行信息提取,提取出发送者、接收者和信息。Function check_outlinemessage(message As String)sender_where1=0reciever_where1=0outmessage_where1=0sender_where2=0reciever
16、_where2=0outmessage_where2=0If InStr(message,*2)0 ThenDosender_where1=InStr(sender_where2+1,message,*1)sender_where2=InStr(sender_where1+1,message,*1)sender=Mid(message,sender_where1+3,sender_where2-sender_where1-3)outmessage_where1=InStr(outmessage_where2+1,message,*$)outmessage_where2=InStr(outmes
17、sage_where1+1,message,*$)outmessage=Mid(message,outmessage_where1+4,outmessage_where2-精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用outmessage_where1-4)If Form2.ListView1.ListItems(n).Text=sender ThenPrivate_Chat(n).Text1.Text=Private_Chat(n).Text1.Text&outmessagePrivate_Chat(n).Text1.SelStart=Len(Private_C
18、hat(n).Text1.Text)Form2.ListView1.ListItems(n).ForeColor=vbRedForm2.ListView1.ListItems(n).ListSubItems.Item(1).ForeColor=vbRedForm2.ListView1.ListItems(n).ListSubItems.Item(2).ForeColor=vbRedEnd IfNextLoop Until InStr(sender_where2+1,message,*1)=0End IfEnd Function1读取数据库中的聊天信息。添加 VB 的控件 ADO,ADO 控件建
19、立起读取聊天记录的桌面型数据库 access,读取数据库中信息,如图 2.4。代码如下:Sub adddata()oncn.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=&App.Path&data.mdb;Persist Security Info=FalseSet rs=cn.Execute(select*from data)End Sub精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用当按下群聊天记录的时候弹出对应的 RichTextBox控件如下列图2将群聊天信息参加到数据库。提取$
20、与$之间的群聊天信息If InStr(sData,$)0 Thengroup_chat1=InStr(sData,$)group_chat2=InStr(group_chat1+1,sData,$)ssData=Mid(sData,group_chat1+3,group_chat2-group_chat1-3)=插入聊天记录a=CStr(Now()+Chr(10)+ssData+Chr(10)精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用Set rs=cn.Execute(insert into data(tcp_data)values(&a&)tcp_data
21、是表的列名=插入聊天记录rtbIn.Text=rtbIn.Text+Chr(10)+CStr(Now()+Chr(10)+ssData+Chr(10)rtbIn.SelStart=Len(rtbIn.Text)End IfCall check_useronline(sData)Call set_privatechat1当用户登录的时候,效劳器会发送当前用户列表的信息给客户端,协议为*用户名*IP 地址,当 IP 地址为 NULL 时,客户端识别为没有上线,只有不是NULL 的时候才是真正有上线,对于上线的用户,在listview 中的状态会由 0 变为 1,表示已经上线。同时会清空 listv
22、iew,将所以的用户进行重新的加载。如图 2.6.代码如下:Public Sub check_useronline(gData As String)account_where1=0IP_where1=0account_where2=0IP_where2=0If InStr(gData,*)=1 ThenForm2.ListView1.ListItems.Clear清空列表Doaccount_where1=InStr(account_where2+1,gData,*)account_where2=InStr(account_where1+1,gData,*)Username=Mid(gData,
23、account_where1+3,account_where2-account_where1-3)IP_where1=InStr(IP_where2+1,gData,)IP_where2=InStr(IP_where1+1,gData,)UserIP=Mid(gData,IP_where1+3,IP_where2-IP_where1-3)Set itmx=Form2.ListView1.ListItems.Add(1,Username)itmx.SubItems(2)=UserIPIf UserIP NULL Then精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华南 农业大学 计算机网络 课程设计 报告 2021 整理
限制150内