📄 clsserver.vb
字号:
Imports System.Net.Sockets
Public Class ClsServer
Dim clients As New Hashtable
Const PORT_NUM As Integer = 10000
Private listener As TcpListener
Public Event StatusChanged()
Public Sub DoListen()
listener = New TcpListener(System.Net.IPAddress.Any, PORT_NUM)
listener.Start()
Do
Dim client As New ClsUser
client.Init(listener.AcceptTcpClient)
AddHandler client.LineRecived, AddressOf OnLineReceived
Loop Until False
End Sub
Private Sub OnLineReceived(ByVal sender As Object, ByVal data As String)
Dim dataArray() As String
dataArray = data.Split(",")
Dim TempDBComputer As New ClsComputer
TempDBComputer.ComputerName = dataArray(1)
Select Case dataArray(0)
Case "CONNECT"
If TempDBComputer.ComputerExist = False Then
MsgBox("未知计算机,计算机名称(MAC地址)为 " & dataArray(1), MsgBoxStyle.Exclamation, "计算机机房管理系统")
Exit Sub
End If
If clients.Contains(dataArray(1)) = False Then
'用计算机名来标识Socket对象
clients.Add(dataArray(1), sender)
Else
clients.Remove(dataArray(1))
clients.Add(dataArray(1), sender)
End If
TempDBComputer.IPAddress = dataArray(2)
TempDBComputer.Connected = "是"
TempDBComputer.UpdateConnect()
RaiseEvent StatusChanged()
Case "LOGIN"
CType(sender, ClsUser).UserName = dataArray(3)
CType(sender, ClsUser).Password = dataArray(4)
Dim Result As Integer = CType(sender, ClsUser).LogConfirm
CType(sender, ClsUser).SendData("LOGIN," & Result.ToString)
TempDBComputer.UserName = dataArray(3)
If Result = 1 Then
TempDBComputer.UpdateUserLogin()
CType(sender, ClsUser).LoginTime = Now
End If
RaiseEvent StatusChanged()
Case "LOGOFF"
TempDBComputer.GetInfo()
TempDBComputer.UserName = dataArray(3)
TempDBComputer.UpdateUserLogoff()
CType(sender, ClsUser).GetInfo()
CType(sender, ClsUser).LogoffTime = Now
CType(sender, ClsUser).Checkout()
CType(sender, ClsUser).AddFeeList(TempDBComputer.RoomNo.ToString & "-" & TempDBComputer.PositionNo.ToString)
CType(sender, ClsUser).SendData("LOGOFF," & CType(sender, ClsUser).Fee.ToString)
RaiseEvent StatusChanged()
End Select
End Sub
Public Sub Broad(ByVal Message As String)
Dim client As ClsUser
Dim entry As DictionaryEntry
For Each entry In clients
client = CType(entry.Value, ClsUser)
client.SendData(Message)
Next
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -