企业qq系统总结

上传人:ji****n 文档编号:54318340 上传时间:2018-09-11 格式:PPT 页数:13 大小:87.59KB
返回 下载 相关 举报
企业qq系统总结_第1页
第1页 / 共13页
企业qq系统总结_第2页
第2页 / 共13页
企业qq系统总结_第3页
第3页 / 共13页
企业qq系统总结_第4页
第4页 / 共13页
企业qq系统总结_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《企业qq系统总结》由会员分享,可在线阅读,更多相关《企业qq系统总结(13页珍藏版)》请在金锄头文库上搜索。

1、企业QQ系统总结,前台和后台的函数调用关系,2018年9月11日星期二,1,2018年9月11日星期二,1.注册模块此模块中应用了INI文件、获取windows路径的技术,它们都是利用API 函数来实现的;,2.登录模块此模块主要是将用户名和密码发送到服务器,当服务器端有该用户时,返回一个登录成功的消息,将关闭登录窗体,进入QQ窗体。,3.QQ窗体模块此模块主要显示当前已注册用户的所有名称,并根据用户的在线情况设置用户名称前的图标样式。,4.消息模块此模块主要实现客户端与远程客户端的消息通信,可以发送大容量图片和实现视频链接。,目录,2,注册模块(INI文件),2018年9月11日星期二,(1

2、)INI文件格式:由节(section),参数(键=值,即name=value),注解(conment text) 。 (2)创建INI文件创建INI文件主要应用了API函数WritePrivateProfileString;创建API语法:DllImport(“kerne132“)private static extern long WritePrivateProfileString(string section,string key,string val,string filePath); 温馨提示:session 小节名 , key 关键字,val 值,filePath 文件所在路径。说

3、明:在指定文件下创建INI文件,当文件不存在时, WritePrivateProfileString函数实现创建功能;否则WritePrivateProfileString函数实现的是信息追加功能。 (3)读取INI文件读取INI文件主要应用了API函数GetPrivateProfileString,读取API语法:DllImport(“kerne132“)private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder ret);温馨提示:session 查

4、找条目的小节名称,key 关键字,def 指定目录没有找到时返回的默认值。可设为空(“”) ,retVal 指定一个字符串缓冲区,size retVal缓冲区的最大字符数量,filePath 文件所在路径。,3,注册模块,2018年9月11日星期二,4,(1)获取windows路径获取Windows路径应用了API函数GetWindowsDirectory,实现语法如下:DllImport(“kernel32“)public static extern void GetWindowsDirectory(StringBuilder WinDir, int count);温馨提示:WinDir 获

5、取Windows路径,count 设置字符串大小。,(2)实现过程客户端: 在输入完注册信息后,单击确定按钮,将通过类RegisterMsg记录用户名和密码后,调用ClassSerializers类中SerializeBinary(object request)方法将RegisterMsg的记录序列化为二进制流,然后调用类ClassMsg设置为“发送命令”,消息命令设置为“用户注册”,用UDPSocket类中的Send(System.Net.IPAddress Host, int Port, byte Data)方法将消息发送给网络服务(即UDP的socket),通过网络服务传给服务器端。服务

6、器: 服务器通过UDPClient.receive(ref IPEndPoint remoteEP)接收到客户端传来的消息,并且将存储到内存流中。然后在托管中的事件DataArrival(byte Data, System.Net.IPAddress Ip, int Port)中,先通过调用类库的ClassSerializers类的DeSerializeBinary(System.IO.MemoryStream memStream)方法,将二进制流转换成对象然后赋给ClassMsg类的变量,读取出“用户注册”和“发送命令”,通过RegisterUser(ClassMsg msg, System

7、.Net.IPAddress Ip, int Port)方法中调用,2018年9月11日星期二,5,InsertUser(ClassMsg msg, System.Net.IPAddress Ip, int Port)方法将数据存储到数据库, 向用户发送一个注册结束的命令。客户端:通过UDPClient.receive(ref IPEndPoint remoteEP)接收到服务器传来的消息,并且将存储到内存流中。然后在托管中的事件DataArrival(byte Data, System.Net.IPAddress Ip, int Port)中,先通过调用类库的ClassSerializers

8、类的DeSerializeBinary(System.IO.MemoryStream memStream)方法,将二进制流转换成对象然后赋给ClassMsg类的变量, ,读取消息“注册用户结束”,将服务器IP地址,端口号,以及用户名称写入INI文件中。,登录模块,2018年9月11日星期二,6,客户端:在登录窗体 加载时,首先在Windows目录中查找Server.ini文件,当文件不存在时,调用注册窗体,否则,在INI文件中读取服务器的IP地址和端口号,然后输入用户名和密码,单击确认按钮通过类RegisterMsg记录用户名和密码后,调用ClassSerializers类中Serialize

9、Binary(object request)方法将RegisterMsg的记录序列化为二进制流,然后调用类ClassMsg设置为“发送命令”,消息命令设置为“用户登录”用UDPSocket类中的Send(System.Net.IPAddress Host, int Port, byte Data)方法将消息发送给网络服务(即UDP的socket),通过网络服务传给服务器端。调用Publec_Class类记录用户名。服务器:服务器通过UDPClient.receive(ref IPEndPoint remoteEP)接收到客户端传来的消息,并且将存储到内存流中。然后在托管中的事件DataArri

10、val(byte Data, System.Net.IPAddress Ip, int Port)中,先通过调用类库的ClassSerializers类的DeSerializeBinary(System.IO.MemoryStream memStream)方法,将二进制流转换成对象然后赋给ClassMsg类的变量,读取出“发送命令”和“用户登录”的消息,通过调用UserLogin(ClassMsg msg, System.Net.IPAddress Ip, int Port, int State)方法读取数据库中的值,当读取到值的时,将当前记录的标识为上线状态,并且设置为“上线命令”,调用Se

11、ndMsgToOne(System.Net.IPAddress ip, int port, ClassMsg msg方法将消息返回给用户。客户端:通过UDPClient.receive(ref IPEndPoint remoteEP)接收到服务器传来的消息,,2018年9月11日星期二,7,并且将存储到内存流中。然后在托管中的事件DataArrival(byte Data, System.Net.IPAddress Ip, int Port)中,先通过调用类库的ClassSerializers类的DeSerializeBinary(System.IO.MemoryStream memStrea

12、m)方法,将二进制流转换成对象然后赋给ClassMsg类的变量,读取到“上线命令”,并且调用类库中的Publec_Class类记录当前用户在服务器的ID。,QQ窗体模块,2018年9月11日星期二,8,客户端:调用Publec_Class类将记录的用户名赋值给用户昵称,并且调用GetUserList ()方法,调用类库中的ClassMsg类,设置命令为“发送命令”,消息设置为:“获取所有用户信息”。调用Publec_Class类记录的ServerIP和ServerPort,然后调用UDPSocket类中的Send(System.Net.IPAddress Host, int Port, byt

13、e Data)方法将消息发送给网络服务(即UDP的socket),通过网络服务传给服务器端。服务器:调用类库中的ClassOptionData类读取数据库中所有用户的信息,调用类ClassUserInfo通过while循环遍历和记录所有的用户信息,并且调用ClassUsers类把单用户信息添加到用户列表中。循环结束,调用ClassSerializers类中SerializeBinary(object request)方法将ClassUsers类的记录序列化为二进制流。调用类库中的ClassOptionData类读取所有上线用户,并且通过while循环将用户列表发送给所有者上线用户,客户端:通过

14、UDPClient.receive(ref IPEndPoint remoteEP)接收到服务器传来的消息,然后在托管中的事件DataArrival(byte Data, System.Net.IPAddress Ip, int Port)中,先通过调用类库的ClassSerializers类的DeSerializeBinary(System.IO.MemoryStream memStream)方法,将二进制流转换成对象然后赋给ClassMsg类的变量,读取到“用户列表”的命令,调用方法GetUserList(byte Data, System.Net.IPAddress Ip, int Po

15、rt),将所有用户遍历到用户列表中,并且在ClassUserinfo中读取到用户名称和用户状态,然后设置用户的头像图片。,接收短消息,2018年9月11日星期二,9,客户端:通过UDPClient.receive(ref IPEndPoint remoteEP)接收到服务器传来的消息,并且将存储到内存流中。然后在托管中的事件DataArrival(byte Data, System.Net.IPAddress Ip, int Port)中,先通过调用类库的ClassSerializers类的DeSerializeBinary(System.IO.MemoryStream memStream)方

16、法,将二进制流转换成对象然后赋给ClassMsg类的变量,读取出命令为“发送到单用户”,调用方法GetMsg(byte Data, System.Net.IPAddress Ip, int Port),先将二进制流存储到内存流中,然后调调用类库的ClassSerializers类的DeSerializeBinary(System.IO.MemoryStream memStream)方法,将二进制流转换成对象然后赋给ClassMsg类的变量,记录发送方ID、消息标识、读取发送消息类型为“发送消息”、消息发送状态为“单消息”, Encoding.Unicode.GetString(byte bytes)方法获取消息,在treeView1控件中遍历节点的Tag值,如果找到等于发送方ID的,就将发送方的名称、发送时间、添加到 RichTextBox控件中,在下一行添加发送消息内容,如果没有找到该用户,则设置发送方的ID,并且获取到udpscoket控件的所有信息,将发送方添加到用户列表中,然后再进行添加信息内容以及发送时间等。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号