【论文参考】ASP.NET基于TCP协议的简单即时通信软件的设计与实现(源代码+论文)免费下载
摘要:
即时通信(Instant Message),由于其具有实时性、跨平台性、成本低、效率高等优点而受到广泛的使用。设计并实现一个能够处理多用户进行实时、安全的即时通信系统具有较强的现实意义。即时通信的底层通信是通过SOCKET套接字接口实现的。当前的主流UNIX系统和微软的WINDOWS系统都在内核提供了对SOCKET字接口的支持。使用这个统一的接口,可以编写一个可移植的TCP/IP通信程序。使信息能够在INTERNET上可靠的传输。
本文设计并实现了基于局域网内的简单即时通信系统,系统采用C/S模式,底层通信通过SOCKET套接字接口实现,服务器负责客户端的登录验证,好友信息的保存和心跳报文的发送。客户端采用P2P方式实现消息传递,并能实现文件的传输。本文首先讨论了同步套接字,异步套接字,多线程并发执行任务等;然后阐述了客户端、服务器如何使用XML序列化的消息进行通信。
3.2 系统基本架构
基于C/S架构的即时通信软件便于对用户信息进行统一管理和保存,面向特定的用户,对信息的安全控制能力很强。为了减轻服务器负担,客户端之间的信息传递是采用P2P模式的,服务器只负责用户的注册,登录和用户在线状态的检验。基本结构如图:
3.5.1 实体关系图
服务器是作为记录和读取数据库信息的载体,与客户端关系并不复杂,这里需要重点考虑客户端之间的关系。用户与用户之间的关系是较为特殊的递归关系,即描述发生在两个相同实体上的关系。
系统实现:
4.1 使用XML定义的即时通信协议
4.1.1 信息结构MESSAGE.CS&UMESSAGE.CS
这两个C#类定义了包括服务器信息,状态信息,注册信息,登录信息,聊天信息或者请求文件传输信息的函数,服务器和客户端通过将它们实例化和序列化再转换成流在网络上进行传输。UMESSAGE.CS主要代码如下:
[Serializable]
public class UMessage
{
public UMessage(){ }
private string _nickname;
private string _password;
private string _accounts;
private string _email;
private int _info;//表示注册或者登录信息,客户端信息0为注册,1为登录;服务器返回信息0为用户已存在,1为注册成功,2为服务器未知错误,3为CLIENT在线检查,10为登录失败,11为登录成功
private Friend[] _friend;
private int _fn;
private string _fg;
public string Nickname
{
get { return _nickname; }
set { _nickname = value; }
}
public string Password
{
get { return _password; }
set { _password = value; }
}
public string Accounts
{
get { return _accounts; }
set { _accounts = value; }
}
{
get { return _email; }
set { _email = value; }
}
public int Info
{
get { return _info; }
set { _info = value; }
}
public Friend[] Fri
{
get { return _friend; }
set { _friend = value; }
}
public int Fn
{
get { return _fn; }
set { _fn = value; }
}
public string Fg
{
get { return _fg; }
set { _fg = value; }
}
}
END
联系我
获取更多资源
学习更上一层楼