'*************************************************************************
'**函 数 名:GetMsge
'**输 入:str(String) -
'**输 出:(String) -
'**功能描述:获得消息中的消息类型
'**全局变量:
'**调用模块:
'**作 者:影子
'**日 期:2005-02-06 08:31:58
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Public Function GetMsge(str As String) As String
GetMsge = Trim(Mid(str, 1, 12))
End Function
'*************************************************************************
'**函 数 名:Getname
'**输 入:str(String) -
'**输 出:(String) -
'**功能描述:获得消息中的发送方
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2005-02-06 08:32:55
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Public Function Getname(str As String) As String
Getname = Trim(Mid(str, 13, 8))
End Function
'*************************************************************************
'**函 数 名:Getip
'**输 入:str(String) -
'**输 出:(String) -
'**功能描述:获得消息中的接受方
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2005-02-06 08:33:26
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Public Function Getip(str As String) As String
Getip = Trim(Mid(str, 21, 8))
End Function
'*************************************************************************
'**函 数 名:SetMsge
'**输 入:msge(String) -消息类型
'** :msgname(String) -发送方
'** :msgip(String) -接收方
'** :msgmsg(String) -消息主体
'**输 出:(String) -
'**功能描述:发送消息的格式
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2005-02-06 08:33:44
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Public Function SetMsge(msge As String, msgname As String, msgip As String, msgmsg As String) As String
Dim aa As String * 12
Dim bb As String * 8
Dim cc As String * 8
aa = msge
bb = msgname
cc = msgip
SetMsge = aa & bb & cc & msgmsg
End Function
'*************************************************************************
'**函 数 名:Getmsgmsg
'**输 入:str(String) -
'**输 出:(String) -
'**功能描述:获得消息中的消息主体
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2005-02-06 08:34:01
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Public Function Getmsgmsg(str As String) As String
Getmsgmsg = Trim(Mid(str, 29, Len(str) - 28))
End Function
End Sub
'*************************************************************************
'**函 数 名:Winsock1_ConnectionRequest
'**输 入:Index(Integer) -
'** :ByVal requestID(Long) -
'**输 出:无
'**功能描述:对方请求连接时候触发,当没有以前已经关闭的控件的winsock控件数组的话就创建
'**全局变量:
'**调用模块:
'**作 者:影子
'**日 期:2005-02-06 08:39:12
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
Dim i As Integer
Dim temp As Integer
temp = 0
For i = 1 To intMax
If Winsock1(i).State = 0 Then
temp = i
Exit For
End If
Next
If temp = 0 Then
intMax = intMax + 1
temp = intMax
End If
Load Winsock1(temp)
Winsock1(temp).LocalPort = 0
Winsock1(temp).Accept requestID
End If
End Sub
Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
'获得数据
' On Error Resume Next
Dim clientDat As String
Winsock1(Index).GetData clientDat, vbString
If clientDat <> "" Then
Call fjmsg(clientDat, Index)
End If
End Sub
Public Sub fjmsg(str As String, Index As Integer)
On Error Resume Next
Dim sql As String
Dim i As Integer
Dim hy_re As ADODB.Recordset
Dim re As ADODB.Recordset
Dim tempdept As String
Dim msgstr As String
Dim tempre() As String
msgstr = GetMsge(str)
Select Case msgstr
Case "/getpass"
sql = "select userpwd from usermain where userid=" & Getname(str)
Set hy_re = AdoSet(sql)
If Not hy_re.EOF Then
If Trim(hy_re.Fields(0)) = Trim(Getmsgmsg(str)) Then '登陆成功
Winsock1(Index).SendData SetMsge("/getpass", "ok", "", tempdept)
DoEvents
Else
Winsock1(Index).SendData SetMsge("/getpass", "pass", "", "") '错误密码
DoEvents
End If
Else
Winsock1(Index).SendData SetMsge("/getpass", "yh", "", "") '没有用户
DoEvents
End If
Set hy_re = Nothing
Case Else
End Select
End Sub
Public Function AdoSet(sql As String) As ADODB.Recordset
'给一个sql语句返回记录集
Dim re As ADODB.Recordset
If cn = "" Then
cnSet
End If
On Error GoTo doexit
Set re = New ADODB.Recordset
cn="连接字符串,自己写"
re.Open sql, cn
doexit:
Set AdoSet = re
Set re = Nothing
' MsgBox sql
End Function
Option Explicit
Dim Finttimes As Integer '登录3次
Private Sub Command1_Click()
Winsock1.SendData SetMsge("/getpass", Text1, "", Text2)
DoEvents
End Sub
Private Sub Form_Load()
Winsock1.RemoteHost = Hserverip
Winsock1.RemotePort = 7699
Winsock1.Connect
End Sub
Private Sub Winsock1_Connect()
Print "dd d d"
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim str As String
Winsock1.GetData str, vbString
'MsgBox serverDat
fjmsg (str)
End Sub
Public Sub fjmsg(str As String)
On Error Resume Next
Dim msgstr As String
Dim sql As String
Dim tempre() As String
msgstr = GetMsge(str)
Select Case msgstr
Case "/getpass"
Select Case Getname(str)
Case "yh"
If Finttimes <= 2 Then
MsgBox "没有该用户!", vbApplicationModal + vbInformation, App.Title
Finttimes = Finttimes + 1
Else
MsgBox "3次错误操作,系统强制退出!", vbApplicationModal + vbInformation, App.Title
End
End If
Case "pass"
If Finttimes <= 2 Then
MsgBox "密码错误!", vbApplicationModal + vbInformation, App.Title
Finttimes = Finttimes + 1
Else
MsgBox "3次错误操作,系统强制退出!", vbApplicationModal + vbInformation, App.Title
End
End If
Case "ok"
Hstrid = Trim(Text1.Text)
'设置用户名