农业大学计算机网络课程设计报告.doc
《农业大学计算机网络课程设计报告.doc》由会员分享,可在线阅读,更多相关《农业大学计算机网络课程设计报告.doc(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 . 华南农业大学理学院课程实验(设计)报告专业年级: 11信息与计算科学 学生学号: 201130760学生学号: 201130760学生:学生:实验题目: Socket应用程序设计 指导老师:实验时间:2013年11月1日-2013年11月29日26 / 30目 录1实验容和要求11.1实验容11.2实验要求11.3实验实现的功能12实验过程22.1系统需求分析22.1.1客户端22.1.2服务器22.2系统的概要设计32.3具体实现42.3.1客户端42.3.1.1登陆功能42.3.1.2聊天功能62.3.1.3离线聊天功能82.3.1.4接受离线信息功能92.3.1.5聊天记录功能10
2、2.3.1.6显示用户状态功能122.3.1.7文件传输功能132.3.2服务器192.3.2.1登录、注册验证功能192.3.2.2群聊功能212.3.2.3用户信息管理功能213实验结果234讨论与总结245参考文献246小组分工251实验容和要求1.1实验容在学习完TCP/IP协议组后,要求掌握基于此协议实现网络通信,理解TCP与UDP的不同特征以与实现方式。基于Windows平台建立一个基于TCP/IP协议的网络通讯小应用,实验可采用UDP或TCP实现。1.2实验要求(1)能够进行用户管理,所有用户必须登录到服务器,有服务器维护在线信息;(2)IM功能:用户登录后能够进行实时多方点到点
3、短信息通信,如聊天;(3)能够选择要求服务器进行转发服务;(4)能够保存通信记录到数据库(SQL Server或者其他桌面型数据库或数据文件);(5)能进行双方文件传输,能够显示进度;*(6)支持断点重传,检查时需有功能随时中断传送,并在下次启动时能显示重传状态;*(7)数据包加密;*(8)实时语音双向传送功能;*(9)多方通话功能;(10)界面设计要求布局合理,信息清晰。(11)自加功能。(*为选做容)1.3实验实现的功能(1)服务器能够进行用户管理,所有用户必须登录到服务器,有服务器维护在线信息;(2)IM功能:用户登录后能够进行实时多方点到点短信息通信,如聊天;(3)服务器离线转发功能;
4、(4)客户端保存群聊天记录;(5)能进行双方文件传输,能够显示进度;(10)界面设计要求布局合理,信息清晰。2实验过程2.1系统需求分析2.1.1客户端(1)登陆功能:在用户填写相关的账户和密码时,客户端能够发送连接客户端要求,当,连上客户端的时候,客户端能够将账号和密码信息发送到服务器进行核对,并返回信心(2)聊天功能:在客户端中,用户有权选择群聊还是与某在线用户私聊(3)离线聊天功能:在线的用户可能通过服务器将信息发给离线的用户(4)接受离线信息共能:当用户上线时,接收其他用户的离线信息(5)聊天记录功能:客户端能自动将群聊的信息保存在相应的数据库当中(6)显示用户状态功能:对于在线的用户
5、和离线的用户能够与时显示在表格当中2.1.2服务器(1)维护用户功能:添加新用户,修改用户密码,删除用户(2)更新用户状态功能:通知客户端更新成员状态和相应的列表(3)离线功能:为离线用户保存离线信息,并且在用户上线的时发送相应的离线信息(4)检验用户信息功能:验证用户的账号和密码的正确性,并禁止用户异地同时登陆(5)显示群聊记录:在服务器中几时显示群聊的信息2.2系统的概要设计图2.1软件功能模块图图2.2服务器与客户端功能的设计图2.3服务器与客户端数据流程图2.3具体实现2.3.1客户端2.3.1.1登陆功能图2.4登陆界面(1)在按下登陆按钮的时候,程序获取界面中的服务器中IP地址和端
6、口号,同时检验账号和密码是否有误。若账号和密码填写上没有错误,进行连接服务器。代码如下:Private Sub Command1_Click() 点击登陆按钮 Form2.login = False 设置能否登陆标志为“不能” If Form1.Username.Text = Or Form1.Usercode.Text = Then 检查账号和密码填写是否有空 MsgBox 请输入账号和密码 Else Call tcpClient_Connect 连接服务器 DoEvents If Form2.tcpClient.State = 7 Then 若连接上服务器则发送账号和密码 Form2.tc
7、pClient.SendData | & * & Form1.Username.Text & * & # & Form1.Usercode.Text & # & | *账号*#密码# DoEvents Else MsgBox 没有服务器 End If Timer1.Enabled = True End IfEnd SubPublic Sub tcpClient_Connect() If Form2.tcpClient.State 7 Then Form2.tcpClient.Close Form2.tcpClient.RemoteHost = Form1.txtHost.Text Form2.
8、tcpClient.RemotePort = Form1.txtPort.Text Form2.tcpClient.Connect DoEvents End IfEnd Sub(2)当连接成功后,发送账号和密码,用相关的已经定义好协议进行封装发送给服务器。协议是*账号*#密码#代码如下:If Form2.tcpClient.State = 7 Then 若连接上服务器则发送账号和密码 Form2.tcpClient.SendData | & * & Form1.Username.Text & * & # & Form1.Usercode.Text & # & | *账号*#密码#(3)当客户端
9、收到的服务器的协议信息是密码和账号是正确的时候才能进行真正的登录。协议是:当收到*#时,代表登录成功。当收到*ERROR时,代表没有这账号。当收到#ERROR时,代表密码错误。当收到*ONLINE时,代表账号已经登录。代码如下:If InStr(sData, *#) 0 Then login = True ElseIf InStr(sData, *ERROR) 0 Then MsgBox 没有这账号 ElseIf InStr(sData, #ERROR) 0 Then MsgBox 密码错误 ElseIf InStr(sData, *ONLINE) 0 Then MsgBox 账号已经登录En
10、d If2.3.1.2聊天功能(1)群聊天。在图2.2的文本框中输入字符,便可以发送信息。发送的协议:$群聊天信息$,通过进行过协议封装的聊天信息,能够让服务器进行识别,别且转发给在线用户。图2.5聊天窗口Private Sub cmdSend_Click() If txtOut.Text = Then MsgBox 发送容不能为空 Exit Sub End If tcpClient.SendData $ + Form1.Username.Text + : & txtOut.Text + $ =插入聊天记录 a = CStr(Now() + Chr(10) + Form1.Username.T
11、ext + : + txtOut.Text + Chr(10) Set rs =.Execute(insert into data (tcp_data) values ( & a & ) tcp_data是表的列名 =插入聊天记录 rtbIn.Text = rtbIn.Text & Chr(10) + CStr(Now() + Chr(10) + Form1.Username.Text + : + txtOut.Text + Chr(10) txtOut.Text = rtbIn.SelStart = Len(rtbIn.Text)End Sub(2)发送私聊信息。在listviews中点击相
12、应的用户名字就可以进行私聊,在登陆的时候已经设置好TCP控件的端口号。代码如下:Public Sub set_privatechat() For i = 1 To Form2.ListView1.ListItems.Count Private_Chat(i).ClientSer.Close Private_Chat(i).ClientSer.LocalPort = 8080 + i Private_Chat(i).ClientSer.Listen NextEnd Sub(3)接收在线私聊信息。Private Sub ClientCli_DataArrival(ByVal bytesTotal
13、As Long) ClientCli.GetData str, vbString Text1.Text = Text1.Text & str Text1.SelStart = Len(Text1.Text) If Me.WindowState = 1 Then Timer2.Enabled = True End IfEnd SubPrivate Sub ClientSer_DataArrival(ByVal bytesTotal As Long) ClientSer.GetData str, vbString Text1.Text = Text1.Text & str Text1.SelSta
14、rt = Len(Text1.Text) If Me.WindowState = 1 Then Timer2.Enabled = True End IfEnd Sub2.3.1.3离线聊天功能在输入框中输入私聊信息时,先判断是否在线,假如是在线的话直接利用已经和对方连接的TCP控件进行发送信息。假如是离线用户的话,利用协议将封装好的离线信息发送给服务器,在通过服务器发送给离线的用户。离线信息协议:%*1发送者账号*1*2接收者账号*2*$离线的信息*$%代码如下:Private Sub Command1_Click() Dim str As String If Len(Text2.Text)
15、= 0 Then MsgBox (发送容不能为空!) Exit Sub End If str = Form1.Username.Text & & Time & Chr(13) & Chr(10) & Text2.Text str = str & Chr(13) & Chr(10) & Chr(13) & Chr(10) If ClientSer.State = 7 Then ClientSer.SendData str MsgBox 已连接上对方 ElseIf ClientCli.State = 7 Then ClientCli.SendData str End If If ClientCli
16、.State 7 And ClientSer.State 7 Then 离线信息设置 Form2.tcpClient.SendData % + *1 + Label2.Caption + *1 + *2 + Label3.Caption + *2 + *$ + str + *$ + % DoEvents End If Text1.Text = Text1.Text & str Text1.SelStart = Len(Text1.Text) Text2.Text = End Sub图2.6私聊对话框2.3.1.4接受离线信息功能接收离线私聊信息。当收到服务器的离线信息时,对发送过来的字符串进行
17、信息提取,提取出发送者、接收者和信息。Function check_outlinemessage(message As String) sender_where1 = 0 reciever_where1 = 0 outmessage_where1 = 0 sender_where2 = 0 reciever_where2 = 0 outmessage_where2 = 0 If InStr(message, *2) 0 Then Do sender_where1 = InStr(sender_where2 + 1, message, *1) sender_where2 = InStr(send
18、er_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(outmessage_where1 + 1, message, *$) outmessage = Mid(message, outmessage_where1 + 4, outmessage_where2 - out
19、message_where1 - 4) For n = 1 To Form2.ListView1.ListItems.Count If Form2.ListView1.ListItems(n).Text = sender Then Private_Chat(n).Text1.Text = Private_Chat(n).Text1.Text & outmessage Private_Chat(n).Text1.SelStart = Len(Private_Chat(n).Text1.Text) Form2.ListView1.ListItems(n).ForeColor = vbRed For
20、m2.ListView1.ListItems(n).ListSubItems.Item(1).ForeColor = vbRed Form2.ListView1.ListItems(n).ListSubItems.Item(2).ForeColor = vbRed End If Next Loop Until InStr(sender_where2 + 1, message, *1) = 0 End IfEnd Function2.3.1.5聊天记录功能(1)读取数据库中的聊天信息。添加VB的控件ADO,ADO控件建立起读取聊天记录的桌面型数据库access,读取数据库息,如图2.4。代码如下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 农业大学 计算机网络 课程设计 报告
限制150内