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

80酷酷网    80kuku.com

  用了我一下午的时间终于写完并整理好了利用.net来发送即时消息的材料(当然了,还有上午的数据库设计:)
    数据库设计:info表:id fromstu_id tostu_id content term
其中id是主键,fromstu_id是发送信息的用户的学号(这是和我做的学友录连在一起的),tostu_id是接受信息的用户的学号,content是消息的内容,term是判断是否为新消息。
下面的代码家在校友录中的if not ispostback中
'/////////////////////判断是否有新留言,将自动弹出页面
这里还要将页面的刷新时间设置一下,以便可以循环的读取信息。
     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" 111; LEFT: 141px; POSITION: absolute; TOP: 312px" runat="server" Width="221px" Height="98px" ImageUrl="image/99re1-1.gif"></asp:image>
                <asp:textbox id="TextBox1" 101; LEFT: 73px; POSITION: absolute; TOP: 123px" runat="server" BorderColor="Navy" BorderWidth="1px"></asp:textbox>
                <asp:label id="Label1" 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" 103; LEFT: 26px; POSITION: absolute; TOP: 156px" runat="server" Font-Size="X-Small" ForeColor="Navy" Font-Bold="True">内容:</asp:label>
                <asp:textbox id="TextBox2" 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" 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" 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" 107; LEFT: 75px; POSITION: absolute; TOP: 10px" runat="server" Width="135px" Height="6px" Font-Size="Small">Label</asp:label>
                <asp:label id="Label4" 108; LEFT: 300px; POSITION: absolute; TOP: 9px" runat="server" Width="219px" Height="13px" Font-Size="Small">Label</asp:label>
                <asp:label id="Label5" 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" 110; LEFT: 26px; POSITION: absolute; TOP: 12px" runat="server" Font-Size="X-Small" ForeColor="Red" Font-Bold="True">来自:</asp:label>
                <asp:TextBox id="TextBox3" 112; LEFT: 247px; POSITION: absolute; TOP: 122px" runat="server" Visible="False"></asp:TextBox>
                <asp:Label id="Label8" 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" 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" 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环境下调试成功.

特别感谢:cheery_ke提供思路!
朋友一生一起走,多一个朋友就多一分收获!

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: