分享

制作一个具有私聊功能的聊天室

 悟静 2012-02-16

制作一个具有私聊功能的聊天室

例6.10  在聊天室中,几个网友一起聊天时,总会有一些话题不想被同一聊天室内别的聊友看见,因此聊天室必须设置私聊的功能,如图6.12所示。

 
(点击查看大图)图6.12  具有私聊功能聊天室

在6.3.4节中已经制作了一个简单的聊天室,在此基础上设计一个具有私聊功能的聊天室。程序实现的主要步骤:(实例位置:光盘\TM\Instances\06\ch10)

(1)在显示聊天信息页Bottom.aspx中,再添加一个TextBox控件,用来显示私聊信息;在Default.aspx中,再添加一个CheckBox控件,用来区分聊天信息为私聊还是群聊。

(2)主要程序代码如下。

为了实现私聊功能,需要修改Global.axax文件,在文件中加入如下代码。

  1. void Application_Start(object sender, EventArgs e)   
  2.    {  
  3.       //在应用程序启动时运行的代码  
  4.       //建立用户列表  
  5.       string user="";//用户列表  
  6.       Application["user"] = user;  
  7.       Application["userNum"] = 0;  
  8.       string chats = "";//聊天记录    
  9.       Application["chats"] = chats;  
  10.       //当前的聊天记录数  
  11.       Application["current"] = 0;  
  12.       string receive = "";//接受列表  
  13.       Application["receive"] = receive;  
  14.       string Owner = "";//发送列表  
  15.       Application["Owner"] = Owner;  
  16.       string chat = "";//私聊内容列表  
  17.       Application["chat"] = chat;  
  18.       Application["chatnum"] = 0; //私聊内容的当前记录数  
  19.       string chattime = "";//私聊信息发送时间  
  20.       Application["chattime"] = chattime;   
  21.    } 

(3)进入添加聊天信息页面Bottom.aspx,当用户输入聊天信息并选中"私聊"复选框后,单击"我要发言"按钮,在"我要发言"按钮的Click事件下将发送者、接收者、发送时间、聊天内容这4项信息保存在Application对象中,其代码如下。

  1. protected void  Button1_Click(object sender, EventArgs e)  
  2.      {  
  3.         Application.Lock( );  
  4.         string strTxt = TextBox2.Text.ToString( );  
  5.         int intintChatNum = int.Parse(Application["chatnum"].ToString ( ));  
  6.         if (CheckBox1.Checked)  
  7.         {  
  8.           //处理私聊内容  
  9.           if (intChatNum == 0 || intChatNum > 40)  
  10.           {  
  11.             intChatNum = 0;  
  12.             Application["chat"] = strTxt.ToString( );  
  13.             Application["Owner"] = Session["user"];  
  14.             Application["chattime"] = DateTime.Now;  
  15.             Application["receive"] = DropDownList1.
    SelectedValue.ToString( );  
  16.           }  
  17.           else  
  18.           {  
  19.             Application["chat"] = Application["chat"] 
    + "," + strTxt.ToString( );  
  20.             Application["Owner"] = Application["Owner"] 
    + "," + Session["user"];  
  21.             Application["chattime"] = Application
    ["chattime"] + "," + DateTime.Now;  
  22.             Application["receive"] = Application
    ["receive"] + "," + DropDownList1.SelectedValue.ToString( );  
  23.             }  
  24.             intChatNum += 1;  
  25.             object obj = intChatNum;  
  26.             Application["chatnum"] = obj;  
  27.         }  
  28.         else  
  29.         {  
  30.            //处理公共聊天内容  
  31.            int intintcurrent = int.Parse(Application
    ["current"].ToString( ));  
  32.            if (intcurrent == 0 || intcurrent >40)  
  33.            {  
  34.               intcurrent = 0;  
  35.                 Application["chats"] =Session["user"].
    ToString( ) + "对" + DropDownList1.SelectedValue.ToString
    ( ) + "说:" + strTxt.T oString( )+"("+ DateTime.Now.ToString( )+")" ;  
  36.             }  
  37.             else  
  38.             {  
  39.                  Application["chats"] = Application["chats"].
    ToString( ) + "," + Session["user"].ToString( ) + "对" +
    DropDownList 1.SelectedValue.ToString( ) + "说:" + 
    strTxt.ToString( ) + "(" + DateTime.Now.ToString( ) + ")";  
  40.                  
  41.             }  
  42.             intcurrent +=1;  
  43.             object obj = intcurrent;  
  44.             Application["current"] = obj;  
  45.          }  
  46.          Application.UnLock( );  
  47.          //刷新聊天页面  
  48.          Response.Write("<script language=javascript>");  
  49.          Response.Write("this.parent.right.location.reload( )");  
  50.          Response.Write("</script>");  
  51.      } 

(4)进入显示聊天信息页面right.aspx,当页面加载时,从Application对象中读取保存聊天信息,将所有的聊天记录显示在页面中,代码如下。

  1. protected void Page_Load(object sender, EventArgs e)  
  2.    {  
  3.       Application.Lock( );  
  4.       string OwnerName=Session["user"].ToString( );  
  5.       if (!IsPostBack)  
  6.       {   
  7.          //私聊、发送、接收  
  8.          string Owner = Application["Owner"].ToString( );  
  9.          string[] Ownsers = Owner.Split(',');  
  10.          string receive = Application["receive"].ToString( );  
  11.          string[] receivereceives = receive.Split(',');  
  12.          string chat=Application["chat"].ToString( );  
  13.          string [] chatchats=chat.Split(',');  
  14.          string chattime=Application["chattime"].ToString( );  
  15.          string[] chattimechattimes=chattime.Split(',');  
  16.          for (int i = (Ownsers.Length - 1); i>=0 ; i--)  
  17.          {  
  18.             if (OwnerName.Trim( ) == Ownsers[i].Trim( ))  
  19.             {  
  20.               //发送  
  21.               TextBox2TextBox2.Text = TextBox2.Text + "\n" 
    + "您悄悄地对" + receives[i].ToString( ) + "说:" + chats[i].
    ToString( ) + "("+chattimes[i].ToString( )+")";  
  22.             }  
  23.             else  
  24.             {  
  25.               if (OwnerName.Trim( ) == receives[i].Trim( ))  
  26.               {  
  27.                 //接收  
  28.                   TextBox2TextBox2.Text = TextBox2.Text + 
    "\n"  + Ownsers[i].ToString( ) + "悄悄地对您说:" + chats[i].
    ToString( ) + "(" + chattimes[i].ToString( ) + ")";  
  29.                 
  30.                }  
  31.             }  
  32.               
  33.          }  
  34.          //公聊  
  35.          int intintcurrent = int.Parse(Application
    ["current"].ToString( ));  
  36.          string strchat = Application["chats"].ToString( );  
  37.          string[] strchatstrchats = strchat.Split(',');  
  38.          for (int i = (strchats.Length - 1); i >= 0; i--)  
  39.          {  
  40.             if (intcurrent == 0)  
  41.             {  
  42.               TextBox1.Text =strchats[i].ToString( );  
  43.             }  
  44.             else  
  45.             {   
  46.               TextBox1TextBox1.Text = TextBox1.Text + 
    "\n" + strchats[i].ToString( );  
  47.             }  
  48.                  
  49.          }  
  50.              
  51.       }  
  52.       Application.UnLock( );  
  53.    } 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多