论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

基于tcp协议的简单即时通信软件(论文+程序)

由于MESSAGE.CS与UMESSAGE.CS类似,在此不再详述。

内容来自论文无忧网 www.paper51.com

服务器和客户端都可以通过相同的代码对UMESSAGE赋值,再通过XmlSerializer方法进行将UMESSAGE序列化为XML文档,最后将XML文档转化为网络流进行传输。代码如下: paper51.com

        #region 将登录信息转为UMessage

内容来自论文无忧网 www.paper51.com

        private void Traslator()

内容来自www.paper51.com

        { 内容来自论文无忧网 www.paper51.com

           

内容来自www.paper51.com

            _message.Accounts=this.TextBox1.Text;

copyright paper51.com

            _message.Nickname=""; http://www.paper51.com

            _message.Password=this.TextBox2.Text; copyright paper51.com

            _message.Email="";

paper51.com

            _message.Info=1;

http://www.paper51.com

            _message.Fri=null; 内容来自论文无忧网 www.paper51.com

        } 内容来自www.paper51.com

        #endregion

内容来自论文无忧网 www.paper51.com

4.1.2   数据结构FriendStruct

paper51.com

服务器如果保存和传递用户的好友信息是难点之一。数据库的设计和信息的传递辨别都是比较难实现的。 内容来自论文无忧网 www.paper51.com

在数据库方面,每个用户拥有各自的好友分组信息(UserFav),分组中间使用“,”分隔,在TCP_FriendInfo表中则分别保存了用户ID和好友ID,使用一个INT字段保存分组信息。数据库以用户ID为标准对好友ID和分组信息进行内连接查询,就可以得到基本的好友信息了。代码如下: 内容来自论文无忧网 www.paper51.com

select * from TCP_UserInfojoin TCP_FriendInfo on TCP_FriendInfo.UserID='" + uid + "' andTCP_UserInfo.UserID=TCP_FriendInfo.FriendID

内容来自论文无忧网 www.paper51.com

在好友信息的传输方面,首先定义一个FriendStruct数据结构(当然也可以用枚举完成)如下:

内容来自论文无忧网 www.paper51.com

using System;

http://www.paper51.com

using System.Collections.Generic;               

内容来自www.paper51.com

usingSystem.Text; copyright paper51.com

namespace TCP

paper51.com

{ http://www.paper51.com

    public class FriendStruct

内容来自论文无忧网 www.paper51.com

    {

内容来自论文无忧网 www.paper51.com

       public struct FileInfo http://www.paper51.com

        { 内容来自www.paper51.com

           public int filere;//接收和拒绝信息,1为接收,2为拒绝,3为取消

paper51.com

           public string filename;

内容来自www.paper51.com

            publiclong filelength;

http://www.paper51.com

        } http://www.paper51.com

    }

paper51.com

    public struct Friend

paper51.com

    {

paper51.com

       public string account; 内容来自论文无忧网 www.paper51.com

       public string nickname;

paper51.com

       public string IP; 内容来自www.paper51.com

       public string status;

内容来自www.paper51.com

       public string fg;//好友分组 http://www.paper51.com

    } paper51.com

}

内容来自www.paper51.com

在MESSAGE.CS或者UMESSAGE.CS中,我们则定义了FriendStruct的数组。在C#中使用DATAREADER语句可以逐句读取数据库查询的结果,再依次将结果赋值FriendStruct数组元素,就得到了便于发送和读取的存放好友信息的数组。赋值代码如下:

copyright paper51.com

       while (getf.Read()) //getf即是以上的数据库查询的datareader语句 copyright paper51.com

        {

内容来自论文无忧网 www.paper51.com

           ff[i].account=getf["UserAccount"].ToString(); 内容来自www.paper51.com

           ff[i].IP = getf["UserIP"].ToString();

内容来自论文无忧网 www.paper51.com

           ff[i].nickname = getf["UserNickname"].ToString(); 内容来自论文无忧网 www.paper51.com

           ff[i].status = getf["UserOnline"].ToString(); 内容来自www.paper51.com

           ff[i].fg = getf["FriendGroup"].ToString(); paper51.com

           i++;

http://www.paper51.com

        } copyright paper51.com

       getf.Close();

http://www.paper51.com

4.2     数据库连接类

copyright paper51.com

实现一个快捷简单的数据库连接的相关代码是非常有必要的。实现的途径也多种多样,鉴于安全性和复杂性的需求不同,实现方法有简有繁。本设计使用了一个简单的类(UserData.CS)实现了简单快捷的数据库连接和读取。主要代码如下: copyright paper51.com

       public static SqlConnection connStr = newSqlConnection("Server=D96B85DD938A465.;uid=sa;pwd=change;database=TCPDB"); copyright paper51.com

        publicstatic SqlDataReader SqlReader(string sql, SqlConnection connstr) 内容来自www.paper51.com

        { 内容来自www.paper51.com

           SqlDataReader sqldr = null; copyright paper51.com

           SqlCommand cmd = new SqlCommand(sql, connstr);

copyright paper51.com

           if (cmd.Connection.State.ToString() == "Closed")cmd.Connection.Open();

paper51.com

           try

内容来自www.paper51.com

           {

内容来自www.paper51.com

               sqldr = cmd.ExecuteReader(); 内容来自论文无忧网 www.paper51.com

           } http://www.paper51.com

           catch (Exception e)

内容来自www.paper51.com

           {

内容来自论文无忧网 www.paper51.com

               if (e != null) sqldr = null; http://www.paper51.com

           } 内容来自www.paper51.com

           return sqldr;

http://www.paper51.com

        }

http://www.paper51.com

        //数据库操作连接

paper51.com

       public static string SqlCmd(string sql, SqlConnection connstr) 内容来自www.paper51.com

        { 内容来自www.paper51.com

           string errorstr = null;

内容来自论文无忧网 www.paper51.com

           SqlCommand sqlcmd = new SqlCommand(sql, connstr);

http://www.paper51.com

           if (sqlcmd.Connection.State.ToString() == "Open") sqlcmd.Connection.Close();

copyright paper51.com

           sqlcmd.Connection.Open();

内容来自论文无忧网 www.paper51.com

           try paper51.com

           { copyright paper51.com

               sqlcmd.ExecuteNonQuery(); 内容来自www.paper51.com

           } 内容来自论文无忧网 www.paper51.com

           catch (Exception e)

paper51.com

           {

paper51.com

               if (e != null) errorstr = e.ToString(); copyright paper51.com

           } copyright paper51.com

           sqlcmd.Connection.Close();

paper51.com

           return errorstr;

内容来自论文无忧网 www.paper51.com

        }

paper51.com

在UserData.CS的基础上,主程序可以更方便地实现数据库连接操作,对数据库进行读写和更新,在此不再详述。

http://www.paper51.com

------分隔线----------------------------
联系方式