华南农业大学计算机网络课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华南农业大学理学院

课程实验(设计)报告

专业年级:11信息与计算科学

学生学号:201130760

学生学号:201130760

学生姓名:

学生姓名:

实验题目:Socket应用程序设计

指导老师:

实验时间:2013年11月1日-2013年11月29日

目录

1实验内容和要求 (1)

1.1实验内容 (1)

1.2实验要求 (1)

1.3实验实现的功能 (1)

2实验过程 (2)

2.1系统需求分析 (2)

2.1.1客户端 (2)

2.1.2服务器 (2)

2.2系统的概要设计 (3)

2.3具体实现 (4)

2.3.1客户端 (4)

2.3.1.1登陆功能 (4)

2.3.1.2聊天功能 (6)

2.3.1.3离线聊天功能 (7)

2.3.1.4接受离线信息功能 (8)

2.3.1.5聊天记录功能 (9)

2.3.1.6显示用户状态功能 (11)

2.3.1.7文件传输功能 (12)

2.3.2服务器 (18)

2.3.2.1登录、注册验证功能 (18)

2.3.2.2群聊功能 (20)

2.3.2.3用户信息管理功能 (21)

3实验结果 (22)

4讨论与总结 (23)

5参考文献 (23)

6小组分工 (24)

1实验内容和要求

1.1实验内容

在学习完TCP/IP协议组后,要求掌握基于此协议实现网络通信,理解TCP 与UDP的不同特征以及实现方式。基于Windows平台建立一个基于TCP/IP协议的网络通讯小应用,实验可采用UDP或TCP实现。

1.2实验要求

(1)能够进行用户管理,所有用户必须登录到服务器,有服务器维护在线信息;(2)IM功能:用户登录后能够进行实时多方点到点短信息通信,如聊天;(3)能够选择要求服务器进行转发服务;

(4)能够保存通信记录到数据库(SQL Server或者其他桌面型数据库或数据文件);

(5)能进行双方文件传输,能够显示进度;

*(6)支持断点重传,检查时需有功能随时中断传送,并在下次启动时能显示重传状态;

*(7)数据包加密;

*(8)实时语音双向传送功能;

*(9)多方通话功能;

(10)界面设计要求布局合理,信息清晰。

(11)自加功能。

(*为选做内容)

1.3实验实现的功能

(1)服务器能够进行用户管理,所有用户必须登录到服务器,有服务器维护在线信息;

(2)IM功能:用户登录后能够进行实时多方点到点短信息通信,如聊天;(3)服务器离线转发功能;

(4)客户端保存群聊天记录;

(5)能进行双方文件传输,能够显示进度;

(10)界面设计要求布局合理,信息清晰。

2实验过程

2.1系统需求分析

2.1.1客户端

(1)登陆功能:在用户填写相关的账户和密码时,客户端能够发送连接客户端要求,当,连上客户端的时候,客户端能够将账号和密码信息发送到服务器进行核对,并返回信心

(2)聊天功能:在客户端中,用户有权选择群聊还是与某在线用户私聊

(3)离线聊天功能:在线的用户可能通过服务器将信息发给离线的用户

(4)接受离线信息共能:当用户上线时,接收其他用户的离线信息

(5)聊天记录功能:客户端能自动将群聊的信息保存在相应的数据库当中(6)显示用户状态功能:对于在线的用户和离线的用户能够及时显示在表格当中

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地址和端口号,同时检验账号和密码是否有误。若账号和密码填写上没有错误,进行连接服务器。

代码如下:

Private Sub Command1_Click() '点击登陆按钮

Form2.login = False '设置能否登陆标志为“不能”

If ername.Text = "" Or ercode.Text = "" Then '检查账号和密码填写是否有空

MsgBox "请输入账号和密码"

Else

Call tcpClient_Connect '连接服务器

DoEvents

If Form2.tcpClient.State = 7 Then '若连接上服务器则发送账号和密码

Form2.tcpClient.SendData "|" & "***" & ername.Text & "***" & "###" & ercode.Text & "###" & "|" '***账号***###密码### DoEvents

Else

MsgBox "没有服务器"

End If

Timer1.Enabled = True

End If

End Sub

Public Sub tcpClient_Connect()

If Form2.tcpClient.State <> 7 Then

Form2.tcpClient.Close

Form2.tcpClient.RemoteHost = Form1.txtHost.Text

Form2.tcpClient.RemotePort = Form1.txtPort.Text

Form2.tcpClient.Connect

DoEvents

End If

End Sub

(2)当连接成功后,发送账号和密码,用相关的已经定义好协议进行封装发送

给服务器。协议是***账号***###密码###

代码如下:

If Form2.tcpClient.State = 7 Then '若连接上服务器则发送账号和密码

Form2.tcpClient.SendData "|" & "***" & ername.Text & "***" & "###" & ercode.Text & "###" & "|" '***账号***###密码### (3)当客户端收到的服务器的协议信息是密码和账号是正确的时候才能进行真

正的登录。

协议是:当收到*#时,代表登录成功。当收到*ERROR时,代表没有这账号。当

收到#ERROR时,代表密码错误。当收到*ONLINE时,代表账号已经登录。

代码如下:

If InStr(sData, "*#") <> 0 Then

login = True

相关文档
最新文档