1.共四个页面,Default.aspx默认主页,Default2.aspx聊天室 default3.aspx显示用户列表,default4.aspx显示聊天内容,添加一个Global.asax全局程序集文件,初始化 Application对象值
2.在global.asax中
void
Application_Start(object sender, EventArgs e)
{
//
在应用程序启动时运行的代码
//建立用户列表
string user = "";//用户列表
Application["user"] = user;
Application["userNum"] = 0;
string chats = "";//聊天记录
Application["chats"] = chats;
Application["current"] = 0;//聊天记录数
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
Application["user"] = "";
Application["chats"] = "";
}
3.DEFAULT.ASPX中
public
partial class _Default : System.Web.UI.Page
{
protected void
Page_Load(object sender, EventArgs e)
{
int p_judge =
0;
p_judge = Convert.ToInt32(Request["value"]);
if (!IsPostBack)
{
if (p_judge == 1)
Response.Write("<script>alert('该用户已经存在')</script>");
}
}
protected void Button1_Click(object sender, EventArgs
e)
{
Application.Lock();
int p_num;//在线人数
string p_name;//登录用户
string p_names;//已在线用户
string[] p_users;//用户在线数组
p_num =
int.Parse(Application["userNum"].ToString());
if
(TextBox1.Text == "")
{
Response.Write("<script>alert('用户名不能为空')</script>");
TextBox1.Focus();
}
else
{
p_name = TextBox1.Text.Trim();
p_names =
Application["user"].ToString();
p_users =
p_names.Split(',');
for (int i = 0; i <= p_num - 1;
i++)
{
if (p_name ==
p_users[i].Trim())
{
int
p_judge = 1;
Response.Redirect("Default.aspx?value="+p_judge);
}
}
if (p_num == 0)
Application["user"]
= p_name.ToString();
else
Application["user"] = Application["user"] + "," + p_name.ToString();
p_num += 1;
Application["userNum"] = p_num;
Session["userName"] = TextBox1.Text.Trim();
Application.UnLock();
Response.Redirect("Default2.aspx");
}
}
4.default2.aspx 采用 frame 的SRC 属性来显示default3 default4
protected
void Page_Load(object sender, EventArgs e)
{
Label1.Text = Session["userName"].ToString();
}
protected void Button1_Click(object sender, EventArgs e)
{
int p_current = int.Parse(Application["current"].ToString());
Application.Lock();
if (p_current == 0 || p_current > 20)
{
p_current = 0;
Application["chats"] =
Session["userName"].ToString() + "说:" + TextBox1.Text.Trim() + "(" +
DateTime.Now.ToString() + ")";
}
else
{
Application["chats"] = Application["chats"].ToString()
+ "," + Session["userName"].ToString() + "说:" + TextBox1.Text.Trim() +
"(" + DateTime.Now.ToString() + ")";
}
p_current
+= 1;
Application["current"] = p_current;
Application.UnLock();
}
protected void
Button2_Click(object sender, EventArgs e)
{
Response.Write("<script>window.close()</script>");
}
5.default3.aspx
protected
void Page_Load(object sender, EventArgs e)
{
ArrayList ItemList = new ArrayList();
Application.Lock();
string p_names;
string[] p_user;
int p_num =
int.Parse(Application["userNum"].ToString());
p_names =
Application["user"].ToString();
p_user = p_names.Split(',');
for (int i = (p_num - 1); i >= 0; i--)
{
ItemList.Add(p_user[i].ToString());
}
ListBox1.DataSource = ItemList;
ListBox1.DataBind();
Application.UnLock();
}
6.defaut4.aspx
protected
void Page_Load(object sender, EventArgs e)
{
int
p_current = int.Parse(Application["current"].ToString());
Application.Lock();
string p_chats =
Application["chats"].ToString();
string[] p_chat =
p_chats.Split(',');
for (int i = p_chat.Length - 1; i >=
0; i--)
{
if (p_current == 0)
{
TextBox1.Text = p_chat[i].ToString();
}
else
{
TextBox1.Text = TextBox1.Text +
"/n" + p_chat[i].ToString();
}
}
Application.UnLock();
}
本文介绍了一个基于ASP.NET的简单聊天室应用实现方案,包括四个页面:Default.aspx作为默认主页,Default2.aspx用于聊天,Default3.aspx显示在线用户列表,Default4.aspx展示聊天记录。此外还介绍了如何使用Global.asax进行全局事件处理,如用户登录验证、聊天消息的存储与显示等关键功能。
3579





