问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

asp.net (vb)统计在线人数

发布网友 发布时间:2022-04-27 11:18

我来回答

2个回答

热心网友 时间:2022-04-27 12:48

给你一个例子:
Imports System.Web
Imports System.Web.SessionState
Imports System.IO

Public Class Global
Inherits System.Web.HttpApplication

#Region " 组件设计器生成的代码 "

Public Sub New()
MyBase.New()

'该调用是组件设计器所必需的。
InitializeComponent()

'在 InitializeComponent() 调用之后添加任何初始化

End Sub

'组件设计器所必需的
Private components As System.ComponentModel.IContainer

'注意: 以下过程是组件设计器所必需的
'可以使用组件设计器修改此过程。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
components = New System.ComponentModel.Container()
End Sub

#End Region

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' 在应用程序启动时激发
Application("GuestCounter") = 0
Application("CurrentGuest") = 0
End Sub

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' 在会话启动时激发
Dim i As Integer
Dim datastr, count As String
Dim stream As FileStream
Dim strreadobj As StreamReader
Dim strwriterobj As StreamWriter
'读取访问次数
stream = New FileStream(Server.MapPath("Counter.txt"), filemode.openorCreate, FileAccess.Read)
strreadobj = New StreamReader(stream)
datastr = strreadobj.ReadLine()
strreadobj.Close()
'将访问数加一
count = CInt(datastr) + 1
'将访问次数赋给application变量]
Application("GuestCounter") = count
'将访问次数写入计数文件
stream = New filestream(Server.MapPath("counter.txt"), filemode.open, FileAccess.write)
strwriterobj = New streamwriter(stream)
strwriterobj.writeline(count)
strwriterobj.close()
'将当前在线人数加一
Application("currentguest") += 1
End Sub

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
' 在每个请求开始时激发
End Sub

Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
' 尝试对使用进行身份验证时激发
End Sub

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' 在发生错误时激发
End Sub

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
' 在会话结束时激发
Application("currentguest") -= 1
End Sub

Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
' 在应用程序结束时激发
End Sub

End Class
----------------------------------------
只要你的思路对了,写代码就容易了。网上关于这方面的现成的代码比较少。
<Script Language="VB" Runat="Server">
'RefreshTime 变量一定要在此声明,否则无法在网页中以 <%= RefreshTime %> 方式访问
Dim RefreshTime As Integer

Sub Page_Load(sender as Object, e as Eventargs)
Dim IdleTime, Num, I As Integer
Dim Tmp(), ID As String
RefreshTime = 10 '设置网页自动更新时间为 10 秒
IdleTime = RefreshTime * 3 '设置闲置时间为自动更新时间的 3 倍

Application.Lock
'清点所有连接到此网页的浏览器,然后将目前打开的浏览器的 SessionID 放入数组的最后
If Application(Session.SessionID & "LastAccessTime") = Nothing Then
If Application("TotalUsers") = Nothing Then Application.Set("TotalUsers", 0)
ReDim Tmp(Application("TotalUsers") + 1)
Num = 0
If Application("TotalUsers") > 0 Then
For I = Application("OnlineUser").GetLowerBound(0) To Application("OnlineUser").GetUpperBound(0)
ID = Application("OnlineUser")(I)
If ID <> Session.SessionID Then
Tmp(Num) = ID
Num += 1
End If
Next
End If
Tmp(Num) = Session.SessionID
Application.Set("TotalUsers", Num + 1)
ReDim Preserve Tmp(Application("TotalUsers"))
Application.Set("OnlineUser", Tmp)
End If

'记录目前打开的浏览器的最近访问时间
Application.Set(Session.SessionID & "LastAccessTime", Timer)

'检查所有连接到此网页的浏览器的最近访问时间,若与目前时间相差 30 秒以上,表示结束连接
ReDim Tmp(Application("TotalUsers"))
Num = 0
For I = 0 To Application("TotalUsers") - 1
ID = Application("OnlineUser")(I)
If (Timer - Application(ID & "LastAccessTime")) < IdleTime Then
Tmp(Num) = ID
Num += 1
Else
Application.Set(ID & "LastAccessTime", Nothing)
End If
Next

'Num 表示目前在线人数, 若与 Application("TotalUsers") 不同, 表示中间有人断线
If Num <> Application("TotalUsers") Then
ReDim Preserve Tmp(Num)
Application.Set("OnlineUser", Tmp)
Application.Set("TotalUsers", Num)
End If
myCounter.Text = "目前在线人数:" & Application("TotalUsers")
Application.UnLock
End Sub
</Script>
<Html>
<Head>
<Meta Http-Equiv="Refresh" Content="<%= RefreshTime %>, Url=<%= Request.ServerVariables("Url") %>">
</Head>
<Body>
<Asp:Label Runat="Server" Id="myCounter" />
</Body>
</Html>

热心网友 时间:2022-04-27 14:06

.asax
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
美的面包机和面要多久 美的面包机和面的时间要多长 美的面包机怎么用手动操作 如何用美的面包机发面 如何用美的面包机和面 美的面包机如何和面 CDR教程—教你如何使用CorelDRAW复制图形方法 苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 没有黄钻,怎么弄QQ空间音乐背景 QQ空间背景音乐怎么设置呀?不是黄钻哦 在没开通黄钻的情况下,怎么弄QQ空间的背景音乐? 急!!!从海门汽车站怎么到南通狼山?(公交车)哪里下车? 从西安市去 卧佛寺怎么去? 从雨花台坐103公交车在去汽车总站坐几路车? 呼兰区到香坊区幸福镇香福路怎么坐公交 漳州有几路公交车到达漳州南山寺? 进香街到黄河路做什么公交车,打车需要多少钱 去南海观音进香车要坐到哪里 在哈尔滨香房区进香街去南岗客运站怎么走从哪上车? 哈尔滨高铁站到香坊区进香街怎么走 南岗区花园街到香坊区进香街坐多少路公交? ASP.NET技术 怎么实现统计网站的访问人数。 请高手指点。最好是有源代码 谢谢 吉林省扶贫驻村干部职称评聘受到不公待遇:2018年一一2020年驻村扶贫,教龄36年。镇赉县教育局_百度问一问 弱弱的问一句,I&#39;m out 我老土了. 我不干了. 还有其他意思么? 我不干了,老板不给工资怎么办? 我不干了 组长让下年直接不用来了 不写辞职书 劳动合同会自动解除吗 “我不干了”“我不做这份工作了”怎样用英文讲? 就是想用那种特别生硬的语气跟外国人讲! 怎么解除 那个老的不用了 手机号绑在老 怎么把绑定的那个手机号换到新_百度问一问 移动光猫的LAN2本来是接机顶盒的iptv然后自行开启了SSID后网络不可以用了怎么办? 移动光猫iptv改写 移动宽带光猫itv口接非移动盒子会产生额外费用么,我接小米盒子发现也可以使用itv口的网? 中国移动光宽带的光猫上的ITV口怎么接啊。 腾讯充值中心充值王者荣耀点卷游戏大区没显示出来 王者荣耀点券充值界面没有理财通是怎么回事? 王者荣耀我充值了100点券,是用Q币充的,为什么我连v1多不到 我是一名代理商,做了很多不同的推广宣传,可是慕名产品而来的少之又少,我想知道,到底怎样才能推广出去 妈妈是泰迪爸爸是比熊生的孩子? 红泰廸母与比熊公生出的宝宝会是什么色什么样? 泰迪和比熊杂交的小狗智商多少? asp.net mvc 项目如何统计在线人数? 比熊和泰迪杂交生的狗狗是不是智商要高些 泰迪妈妈和比熊爸爸生的狗狗要怎么样 瓷砖泡水时间过长怎么办 瓷砖泡水时间太长会有什么影响吗 瓷砖长时间泡水有什么影响 瓷砖为什么要泡水 瓷砖泡水多久合适 瓷砖泡水时间过长会有哪些影响 陶土瓷砖能不能泡水 长期泡水会发生哪些情况