当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > .net中即时消息发送的实现

ASP.NET
FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用方法
.NET 常用功能和代码小结
在 .NET Framework 2.0 中未处理的异常导致基于 ASP.NET 的应用程序意外退出
asp.net IList查询数据后格式化数据再绑定控件
asp.net sql存储过程
asp.net 简单实现禁用或启用页面中的某一类型的控件
asp.net(c#)获取内容第一张图片地址的函数
The remote procedure call failed and did not execute的解决办法
ASP.NET 在线文件管理
asp.net 读取并修改config文件实现代码
ASP.NET Cookie 操作实现
asp.net Silverlight中的模式窗体
Silverlight中动态获取Web Service地址
asp.net Silverlight应用程序中获取载体aspx页面参数
asp.net 水晶报表隔行换色实现方法
asp.net 获取Gridview隐藏列的值
手动把asp.net的类生成dll文件的方法
asp.net 使用ObjectDataSource控件在ASP.NET中实现Ajax真分页
动态指定任意类型的ObjectDataSource对象的查询参数
asp.net Md5的用法小结

ASP.NET 中的 .net中即时消息发送的实现


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 130 ::
收藏到网摘: n/a

用了我一下午的时间终于写完并整理好了利用.net来发送即时消息的材料(当然了,还有上午的数据库设计:)

数据库设计:info表:idfromstu_idtostu_idcontentterm

其中id是主键,fromstu_id是发送信息的用户的学号(这是和我做的学友录连在一起的),tostu_id是接受信息的用户的学号,content是消息的内容,term是判断是否为新消息。

下面的代码家在校友录中的ifnotispostback中


'/////////////////////判断是否有新留言,将自动弹出页面
  这里还要将页面的刷新时间设置一下,以便可以循环的读取信息。
   Dim mysql As String = "select * from info where tostu_id=@myid and term=1"
   Dim comm As SqlCommand = New SqlCommand(mysql, conn)
   comm.Parameters.Add(New SqlParameter("@myid", SqlDbType.Int, 4))
   comm.Parameters("@myid").Value = Session("stu_id")
   Dim dr As SqlDataReader
   conn.Open()
   dr = comm.ExecuteReader
   If dr.Read Then
   Response.Write("<script language=JavaScript>window.open('info.aspx','','height=330,width=560,status=no,location=no,toolbar=no,directories=no,menubar=no')</script>")
   End If
   dr.Close()
   comm.Cancel()

下面的代码是用来发送即时消息的页面,其中里面分了两个部分,一个是用来回复的,一个是用来专门发送的,两个的页面稍有区别,仔细看一下就会明白的:)

下面是所有的代码:codebehind部分


  Public Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   If Not IsPostBack Then
   Dim tostu_id As String = Request.QueryString("tostu_id")
   If tostu_id = "" Then
   '//////////////////当回复留言时
   Dim sql As String = "select a.*,b.nick from info a,pwd b where a.fromstu_id=b.stu_id and a.tostu_id='" & Session("stu_id") & "' and a.term=1"
   Dim comm As SqlCommand = New SqlCommand(sql, conn)
   Dim dr As SqlDataReader
   conn.Open()
   dr = comm.ExecuteReader
   While dr.Read
   Label3.Text = dr.Item("nick")
   Label4.Text = dr.Item("tim")
   Label5.Text = dr.Item("content")
   TextBox1.Text = dr.Item("nick")
   TextBox3.Text = dr.Item("fromstu_id")
   TextBox1.Enabled = False
   Label8.Visible = False
   End While
   dr.Close()
   comm.Cancel()
   '//////////////////////更新留言使留言属性为已阅读过
   Dim sql_1 As String = "update info set term=0 where tostu_id='" & Session("stu_id") & "' and term=1 and tim='" & Label4.Text & "'"
   comm = New SqlCommand(sql_1, conn)
   comm.ExecuteNonQuery()
   Else
   '////////////////////当发送留言时
   Dim mysql As String = "select nick from pwd where stu_id='" & tostu_id & "'"
   Dim comm As SqlCommand = New SqlCommand(mysql, conn)
   Dim dr As SqlDataReader
   conn.Open()
   dr = comm.ExecuteReader
   While dr.Read
   TextBox1.Text = dr.item("nick")
   End While
   TextBox1.Enabled = False
   Label3.Text = ""
   Label4.Text = ""
   Label5.Visible = False
   Label8.Visible = True
   Label6.Visible = False
   Label7.Visible = False
   Label9.Visible = False
   dr.close()
   End If
   End If
   End Sub


   '/////////////////书写提交消息事件
   Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   Dim tostu_id As String = Request.QueryString("tostu_id")
   If tostu_id = "" Then
   '/////////////////////////当回复留言时
   conn.Open()
   Dim sql As String = "insert into info(fromstu_id,tostu_id,content,term,tim) values(@fromstu_id,@tostu_id,@content,@term,@tim)"
   Dim comm As SqlCommand = New SqlCommand(sql, conn)
   comm.Parameters.Add(New SqlParameter("@fromstu_id", SqlDbType.Int, 4))
   comm.Parameters("@fromstu_id").Value = Session("stu_id")
  
   comm.Parameters.Add(New SqlParameter("@tostu_id", SqlDbType.Int, 4))
   comm.Parameters("@tostu_id").Value = TextBox3.Text
  
   comm.Parameters.Add(New SqlParameter("@content", SqlDbType.VarChar, 200))
   comm.Parameters("@content").Value = TextBox2.Text
  
   comm.Parameters.Add(New SqlParameter("@term", SqlDbType.Int, 4))
   comm.Parameters("@term").Value = "1"
  
   comm.Parameters.Add(New SqlParameter("@tim", SqlDbType.Char, 20))
   comm.Parameters("@tim").Value = Date.Now
   comm.ExecuteNonQuery()
   TextBox2.Text = ""
   Else
   '/////////////////////////当发送留言时
   conn.Open()
   Dim sql As String = "insert into info(fromstu_id,tostu_id,content,term,tim) values(@fromstu_id,@tostu_id,@content,@term,@tim)"
   Dim comm As SqlCommand = New SqlCommand(sql, conn)
   comm.Parameters.Add(New SqlParameter("@fromstu_id", SqlDbType.Int, 4))
   comm.Parameters("@fromstu_id").Value = Session("stu_id")
  
   comm.Parameters.Add(New SqlParameter("@tostu_id", SqlDbType.Int, 4))
   comm.Parameters("@tostu_id").Value = tostu_id
  
   comm.Parameters.Add(New SqlParameter("@content", SqlDbType.VarChar, 200))
   comm.Parameters("@content").Value = TextBox2.Text
  
   comm.Parameters.Add(New SqlParameter("@term", SqlDbType.Int, 4))
   comm.Parameters("@term").Value = "1"
  
   comm.Parameters.Add(New SqlParameter("@tim", SqlDbType.Char, 20))
   comm.Parameters("@tim").Value = Date.Now
   comm.ExecuteNonQuery()
   TextBox2.Text = ""
   End If
   Response.Write("<script language=javascript>alert('发送成功!')</script>")
   End Sub
  
   '////////////////////返回继续发送
   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
   Response.Redirect("boaman.aspx")
   End Sub
  End Class

页面部分:


  <%@ Page Language="vb" AutoEventWireup="false" Codebehind="info.aspx.vb" Inherits="_99re1.info"%>
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <HTML>
   <HEAD>
   <title></title>
   <meta content="Microsoft Visual Studio.NET 7.0" name="GENERATOR">
   <meta content="Visual Basic 7.0" name="CODE_LANGUAGE">
   <meta content="JavaScript" name="vs_defaultClientScript">
   <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
   </HEAD>
   <body background="image/bg.gif" MS_POSITIONING="GridLayout">
   <form id="Form1" method="post" runat="server">
   <FONT face="宋体">
   <asp:image id="Image3" style="Z-INDEX: 111; LEFT: 141px; POSITION: absolute; TOP: 312px" runat="server" Width="221px" Height="98px" ImageUrl="image/99re1-1.gif"></asp:image>
   <asp:textbox id="TextBox1" style="Z-INDEX: 101; LEFT: 73px; POSITION: absolute; TOP: 123px" runat="server" BorderColor="Navy" BorderWidth="1px"></asp:textbox>
   <asp:label id="Label1" style="Z-INDEX: 102; LEFT: 26px; POSITION: absolute; TOP: 127px" runat="server" Width="42px" Height="18px" Font-Size="X-Small" ForeColor="Navy" Font-Bold="True">发往:</asp:label>
   <asp:label id="Label2" style="Z-INDEX: 103; LEFT: 26px; POSITION: absolute; TOP: 156px" runat="server" Font-Size="X-Small" ForeColor="Navy" Font-Bold="True">内容:</asp:label>
   <asp:textbox id="TextBox2" style="Z-INDEX: 104; LEFT: 73px; POSITION: absolute; TOP: 154px" runat="server" TextMode="MultiLine" Width="449px" Height="74px" BorderColor="Navy" BorderWidth="1px" MaxLength="200"></asp:textbox>
   <asp:button id="Button1" style="Z-INDEX: 105; LEFT: 357px; POSITION: absolute; TOP: 252px" runat="server" Width="50px" Height="20px" Text="发送" BorderColor="Navy" BorderWidth="1px" BackColor="#FFE0C0"></asp:button>
   <asp:button id="Button2" style="Z-INDEX: 106; LEFT: 176px; POSITION: absolute; TOP: 253px" runat="server" Width="87px" Height="20px" Text="继续发送…" BorderColor="Navy" BorderWidth="1px" BackColor="#FFE0C0"></asp:button>
   <asp:label id="Label3" style="Z-INDEX: 107; LEFT: 75px; POSITION: absolute; TOP: 10px" runat="server" Width="135px" Height="6px" Font-Size="Small">Label</asp:label>
   <asp:label id="Label4" style="Z-INDEX: 108; LEFT: 300px; POSITION: absolute; TOP: 9px" runat="server" Width="219px" Height="13px" Font-Size="Small">Label</asp:label>
   <asp:label id="Label5" style="Z-INDEX: 109; LEFT: 73px; POSITION: absolute; TOP: 40px" runat="server" Width="447px" Height="71px" Font-Size="X-Small" BorderColor="SlateGray" BorderWidth="1px">Label</asp:label>
   <asp:label id="Label6" style="Z-INDEX: 110; LEFT: 26px; POSITION: absolute; TOP: 12px" runat="server" Font-Size="X-Small" ForeColor="Red" Font-Bold="True">来自:</asp:label>
   <asp:TextBox id="TextBox3" style="Z-INDEX: 112; LEFT: 247px; POSITION: absolute; TOP: 122px" runat="server" Visible="False"></asp:TextBox>
   <asp:Label id="Label8" style="Z-INDEX: 113; LEFT: 116px; POSITION: absolute; TOP: 55px" runat="server" Height="33px" Width="327px" Font-Bold="True" ForeColor="Navy" Font-Size="Large" Font-Names="方正姚体" Font-Underline="True">直接写入内容点击发送即可!</asp:Label>
   <asp:Label id="Label7" style="Z-INDEX: 114; LEFT: 225px; POSITION: absolute; TOP: 12px" runat="server" Height="15px" Width="71px" Font-Bold="True" ForeColor="Red" Font-Size="X-Small">发信日期:</asp:Label>
   <asp:Label id="Label9" style="Z-INDEX: 115; LEFT: 25px; POSITION: absolute; TOP: 41px" runat="server" Font-Bold="True" ForeColor="Red" Font-Size="X-Small">内容:</asp:Label>
   </FONT>
   </form>
   </body>
  </HTML>

以上代码在bata2环境下调试成功。