C#实例之简单聊天室(状态管理)
前言
状态管理是在同一页或不同页的多个请求发生时,维护状态和页信息的过程。因为Web应用程序的通信协议使用了无状态的HTTP协议,所以当客户端请求页面时,ASP.NET服务器端都会重新生成一个网页实例。此时,旧网页的任务完成,旧网页的实例也随之消失。这种无状态,意味着客户端用户在浏览器中的一些状态或是对数据的一些修改都将丢失。
简单聊天室
这里运用System.Web命名空间的那些管理状态的类,做一个简单的聊天室
protected void Button1_Click(object sender, EventArgs e){Application.Lock();int intUserNum;string user;string[] users;string strUserName;intUserNum = Convert.ToInt32(Application["userNum"]);if (intUserNum > 20){Response.Write("在线人数超过20人,不能登录了!");Response.Redirect("Default.aspx");}else {user = Application["user"].ToString();users = user.Split(',');strUserName = TextBox1.Text.Trim();for (int i = 0; i < intUserNum; i++) {if (users[i] == strUserName){Response.Redirect("Default.aspx?value=1");}}if (users == null)Application["user"] = strUserName;elseApplication["user"] += "," + strUserName;intUserNum += 1;Application["userNum"] = intUserNum.ToString();Session["user"] = strUserName;Application.UnLock();Response.Redirect("main.aspx"); ;}}
public partial class Left : System.Web.UI.Page{private ArrayList ItemList = new ArrayList();protected void Page_Load(object sender, EventArgs e){Application.Lock();if (Session["user"] == null)Response.Redirect("Default.aspx");elseLabel1.Text = Session["user"].ToString();int userCount = int.Parse(Application["userNum"].ToString());Label2.Text = userCount.ToString();string user = Application["user"].ToString();string[] users = user.Split(',');for (int i = (userCount-1); i >= 0; i--) {ItemList.Add(users[i]);}ListBox1.DataSource = ItemList;ListBox1.DataBind();Application.UnLock();}}
protected void Page_Load(object sender, EventArgs e){Application.Lock();if (!IsPostBack) {string chat=Application["chats"].ToString();int chatNum=int.Parse(Application["current"].ToString()) ;string[] chats = chat.Split(',');for (int i = chatNum - 1; i >= 0; i--){if(chatNum==0)TextBox1.Text=chats[i];elseTextBox1.Text=TextBox1.Text+"\n"+chats[i];}}Application.UnLock();}
public partial class bottom : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){Application.Lock();string userName = Application["user"].ToString();string[] users = userName.Split(',');DropDownList1.DataSource = users;DropDownList1.DataBind();Application.UnLock();}protected void Button1_Click(object sender, EventArgs e){Application.Lock();int current = int.Parse(Application["current"].ToString());string liaotian = Session["user"] + "对" + DropDownList1.SelectedValue.ToString() + "说:" + TextBox1.Text.Trim() + DateTime.Now.ToString();if (current == 0 || current > 40){current = 0;Application["chats"] = liaotian;}else{Application["chats"] +=","+ liaotian;}current += 1;Application["current"] = (object)current;Application.UnLock();}}
<div><iframe id="ifraLeft" name="ifraLeft" src="Left.aspx"style="width:200px;height:500px;float:left;margin-left:10px;margin-top:10px;background-color:grey;border:2px solid #000000"></iframe><iframe id="ifraRight" name="ifraRight" src="Right.aspx"style="width:700px;height:500px;float:left;margin-top:10px;background-color:#000000;border:2px solid #000000;"></iframe><iframe id="ifrabottom" name="ifrabottom" src="bottom.aspx"style="width:900px;height:50px;margin-left:10px;margin-top:10px;background-color:red;border:2px solid #000000;"></iframe></div>
案例代码下载
C#实例之简单聊天室(状态管理)的更多相关文章
- java web利用mvc结构实现简单聊天室功能
简单聊天室采用各种内部对象不适用数据库实现. 一个聊天室要实现的基本功能是: 1.用户登录进入聊天室, 2.用户发言 3.用户可以看见别人发言 刚才算是简单的需求分析了,现在就应该是进 ...
- 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。
基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于S ...
- Python Socket 简单聊天室2
上篇文章写了一个简单的单线程的一问一答的简单聊天室.这次我们使用SocketServer模块搭建一个多线程异步的聊天室. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- Asp.Net SignalR - 简单聊天室实现
简单聊天室 使用持久链接类我们就可以做一些即时通讯的应用了,我使用Group做了一个简单的聊天室,先上图技术细节下面再讲 可以加入聊天室.创建聊天室.发送消息,下面就说说我是如何通过Group做出来的 ...
- SpringBoot 搭建简单聊天室
SpringBoot 搭建简单聊天室(queue 点对点) 1.引用 SpringBoot 搭建 WebSocket 链接 https://www.cnblogs.com/yi1036943655/p ...
- ASP.NET SingalR + MongoDB 实现简单聊天室(一):搭建基本框架
ASP.NET SingalR不多介绍.让我介绍不如看官网,我这里就是直接上源代码,当然代码还是写的比较简单的,考虑的也少,希望各位技友多多提意见. 先简单介绍聊天室功能: 用户加入聊天室,自动给用户 ...
- 利用socket.io+nodejs打造简单聊天室
代码地址如下:http://www.demodashi.com/demo/11579.html 界面展示: 首先展示demo的结果界面,只是简单消息的发送和接收,包括发送文字和发送图片. ws说明: ...
- C++ socket 网络编程 简单聊天室
操作系统里的进程通讯方式有6种:(有名/匿名)管道.信号.消息队列.信号量.内存(最快).套接字(最常用),这里我们来介绍用socket来实现进程通讯. 1.简单实现一个单向发送与接收 这是套接字的工 ...
- C#基于Socket的简单聊天室实践
序:实现一个基于Socket的简易的聊天室,实现的思路如下: 程序的结构:多个客户端+一个服务端,客户端都是向服务端发送消息,然后服务端转发给所有的客户端,这样形成一个简单的聊天室功能. 实现的细节: ...
随机推荐
- 【题解】P1020 导弹拦截
[题解]P1020 导弹拦截 从n^2到nlogn 第二问就是贪心,不多说 第一问: 简化题意:求最长不下降子序列 普通n^2: for (int i = 1; i <= n; i++) for ...
- C/C++中的排序和查找
以下内容来自<C/C++程序设计实用案例教程> 1.排序 1.1使用qsort函数 C/C++库函数提供了快速排序函数qsort(q时quick的简写),需要引入头文件<stdlib ...
- tar命令详解及使用实例
tar命令 [root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 …. 参数: -c :创建压缩文件 -x :解开压缩文件 -t :查看tar包里面的文件! 上面3个参数只能 ...
- 如何在命令行添加换行符到git commit -m "xxx"
需求来源: 需要将自动识别的组件信息.更新信息.任务跟踪单号.下载链接等信息自动提交并推送至gerrit, 然后作为触发条件启动另一个协作业务流程. 方法1:单引号开放方法 git commit -m ...
- UnsupportedClassVersionError : 不支持的类版本错误
UnsupportedClassVersionError : 不支持的类版本错误 listenerStart配置类的应用程序侦听器时出错 listenerStart Error configuring ...
- Zookeeper机制
顾名思义 zookeeper 就是动物园管理员,他是用来管 hadoop(大象).Hive(蜜蜂).pig(小 猪)的管理员, Apache Hbase 和 Apache Solr 的分布式集群都用到 ...
- XOR and Favorite Number CodeForces - 617E
a[i]^a[i+1]--a[j]=k; 处理前缀和pre[i] 那么上式可以表示为pre[i-1]^pre[j]=k; #include<bits/stdc++.h> using nam ...
- nginx配置访问https[自签版]
通过openssl生成证书 (1)设置server.key,这里需要设置两遍密码: openssl genrsa -des3 -out server.key 1024 (2)参数设置,首先这里需要输入 ...
- Eclipse+ADT+Android SDK搭建安卓开发环境
第一步:打开[Android.rar]压缩包,如图所示[评论区回复我,压缩包地址] 第二步:配置环境变量 (1) 解压[android-sdk_r24.4.1-windows.zip]压缩包 (2) ...
- Python中autoescape标签使用详解
1.spaceless标签:移除html标签中的空白字符.包括空格.tab键.换行符,示例代码如下: {% spaceless %}具体内容{% endspaceless %} 2.autoescap ...