Winsock Blander Data sammen
'Jeg har VB6, WinXP Home'Jeg har lavet en server side i VB med winsocks, min problem er at når der er mere end 2 clienter tilslutter, blander den data sendt fra clienterne til serveren sammen
'eks, hvis Client1 skriver "te"
'og men Client1 skriver "te" skriver Client2 "st"
'Så bliver mit output "test"... Det skulle det jo ikke være....
'Jeg tror det er noget med "Dim StrDataTemp as String" placeringen i koden..
Hvor skal jeg stille "Dim StrDataTemp as String" ?
Hvis man kan vil jeg hellere have et array der hed StrDataTemp() med indholdet for hver client)
'---Form1----
'3 Winsocks(Listen,Client,Verify), 1 MSFlexGrid(MSFlexGrid1), 1 Statusbar (Statusbar1 (4 paneler)
Option Explicit
Dim Users As Integer
Dim TelnetServer As String
Dim Telnet As String
Dim StrData As String
Dim StrSplit() As String
Dim StrDataTemp As String
Dim Tid As String
Private Sub Form_Load()
With MSFlexGrid1
.Rows = 2
.Cols = 5
End With
MSFlexGrid1.FormatString = "User|User IP | RequestID|Status |Last Response "
StatusBar1.Panels(2).Text = "USERS:"
Telnet = "on"
Listen.Bind 136
Listen.Listen
Tid = Hour(Time) & ":" & Minute(Time) & ":" & Second(Time)
If TelnetServer = "on" Then
Telnet = vbNewLine
Else
Telnet = ""
End If
End Sub
Private Sub Listen_ConnectionRequest(ByVal requestID As Long)
Users = Users + 1
Load Verify(Users)
Load Client(Users)
Verify(Users).Accept requestID
Verify(Users).SendData "LOGON" & Telnet
If MSFlexGrid1.Rows >= Users + 1 Then MSFlexGrid1.Rows = Users + 2
With MSFlexGrid1
.TextMatrix(Users, 0) = Users
.TextMatrix(Users, 1) = Verify(Users).RemoteHostIP
.TextMatrix(Users, 2) = requestID
.TextMatrix(Users, 3) = "Log on"
.TextMatrix(Users, 4) = Now
End With
End Sub
Private Sub Verify_Close(Index As Integer)
MSFlexGrid1.TextMatrix(Index, 3) = "Offline"
MSFlexGrid1.TextMatrix(Index, 4) = Now
End Sub
Private Sub Client_Close(Index As Integer)
MSFlexGrid1.TextMatrix(Index, 3) = "Offline"
MSFlexGrid1.TextMatrix(Index, 4) = Now
End Sub
Private Sub Verify_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Verify(Index).GetData StrData
Debug.Print Tid & " " & Verify(Index).RemoteHostIP & ">StrData= " & StrData
If StrData = vbNewLine Then
StrData = ""
StrData = StrDataTemp
StrDataTemp = ""
StrSplit() = Split(StrData, ":")
If UBound(StrSplit()) > 0 Then
If UCase(StrSplit(0)) = "USER" Then
If UCase(StrSplit(1)) = "PASSWORD" Then
Verify(Index).SendData "LOGON OK" & Telnet
Client(Index).RemoteHost = MSFlexGrid1.TextMatrix(Index, 1)
Client(Index).Accept MSFlexGrid1.TextMatrix(Index, 2)
MSFlexGrid1.TextMatrix(Index, 3) = "Online"
Client(Index).SendData "CLIENT LOGON"
Else
Verify(Index).SendData "WRONG PASSWORD" & Telnet
Debug.Print StrSplit(1)
End If
Else
Debug.Print "USER FALSE"
Debug.Print StrSplit(0)
Verify(Index).SendData "ERROR IN LOGIN" & Telnet
End If
End If
Else
If StrData = vbNewLine Then StrData = ""
StrDataTemp = StrDataTemp & StrData
End If
MSFlexGrid1.TextMatrix(Index, 4) = Now
StatusBar1.Panels(3).Text = Index
StatusBar1.Panels(4).Text = StrDataTemp
End Sub
---Form1----
MVH
BlueIce
