Clients auflisten?

gringo84

Grünschnabel
vb6 chat verbindungs problem

hi


Hab nen Server erstellt und nen client erstellt aber irgendwo ist der Wurm drin.
Der Client Verbindet sich mit dem Server nicht und mit dem Server kann
man keine Nachricht versenden.Wenn man es probiert dann kommt immer
ne Fehlermeldung.Tja bin schon den ganzen Tag am verzweifeln, mal schauen ob
mir jemand weiter helfen kann...



Server:

Code:
Option Explicit

Private blnConnected As Boolean
Private strNick As String
Private blnServer As Boolean

Private blnSendCompleted As Boolean

Private Sub cmdListen_Click()
Dim intMax As Integer
    intMax = 1
    Winsockchat.LocalPort = 1001
    
    Winsockchat.Listen
End Sub


Private Sub send_Click()
  
  
  
  Dim strMessage As String
  
  If Trim(Text4.Text) <> "" Then
    strMessage = "0" & nick & _
                Text4.Text
    
    If blnServer Then
        ForwardMsg strMessage, 0
    Else
      Senden strMessage, 0
    End If
    
        AddMessage Text4.Text, nick
    
    
    Text4.Text = ""
  End If
End Sub

Private Sub AddMessage(strMessage As String, strSender As String)

  Text3.Text = Text.Text & _
                 "(" & Trim(nick) & ") " & _
                 Text4.Text & vbCrLf
  
  Text3.SelStart = Len(Text.Text)      ' An den Schluss des Chat scrollen
End Sub



Private Sub ForwardMsg(strData As String, intExcludeIndex As Integer)
  
  Dim intCounter As Integer
  
  
    If Winsockchat.Count > 1 Then
  
    For intCounter = 1 To Winsockchat.Count - 1
  
      If intCounter <> intExcludeIndex Then
        Senden strData, intCounter
      End If
    Next
  End If
End Sub

Sub wsckChat_ConnectionRequest(index As Integer, ByVal requestID As Long)
    wsckChat(GetNextFreeIndex).Accept requestID
End Sub

Private Function GetNextFreeIndex() As Integer

  Dim intCounter As Integer
  For intCounter = 1 To Winsockchat.Count - 1
    If Winsockchat(intCounter).State = sckClosed Then
        GetNextFreeIndex = intCounter
      Exit Function
    End If
  Next
   GetNextFreeIndex = Winsockchat.Count
   Load Winsockchat(GetNextFreeIndex)
  
End Function

Private Sub Senden_KeyPress(KeyAscii As Integer)
  blnSendCompleted = False
  
  If Winsockchat(index).State = sckConnected Then
   
    Winsockchat(index).SendData strData
  
       Do Until blnSendCompleted
      DoEvents
    Loop
  End If
End Sub

Private Sub Winsockchat_Close()

  If blnServer Then
    
    If index = 0 Then
      blnConnected = False
      blnServer = False
    Else
      AddMessage "Der User " & Winsockchat(index).Tag & " hat den Chat verlassen", "-system-"
      ForwardMsg Left("-system-" & Space(50), 50) & _
          "Der User " & Winsockchat(index).Tag & " hat den Chat verlassen", index
      
      Winsockchat(index).Close
    End If
  Else
    AddMessage "Die Verbindung wurde beendet", "-system-"
    blnConnected = False
    blnServer = False
    
    End If


End Sub

Private Sub winsockchat_Connect()
    Senden "1" & nick
End Sub

Private Sub Winsock_ConnectionRequest(ByVal requestID As Long)
 Dim index As Integer
 Dim intMax As Integer
 If index = 0 Then
        intMax = intMax + 1
        Load Winsock(intMax)
        Winsock(intMax).LocalPort = Text1.Text
        Winsock(intMax).Accept requestID
    End If
End Sub

Private Sub Winsockchat_DataArrival(ByVal bytesTotal As Long)
 
    Dim data As String
    Dim i As Integer
    
    Winsock(index).GetData data 'Empfangenen Text in einen String schreiben
    
    For i = 0 To intMax
        If Winsock(i).State = 7 Then 'Überprüft Winsock No. i verbunden ist
            Winsock(i).SendData data 'Senden des Textes an den Clienten auf Winsock No. i
            DoEvents
        End If
    Next i
    
    Text2.Text = Text2.Text & data & vbCrLf
    Text2.SelLength = Len(Text2.Text) 'Text mitscrollen
'-------------------------------------------

End Sub

Private Sub Command3_Click()


status.SimpleText = "Status:Offline"

  Dim Counter As Integer
  
 For Counter = 0 To Winsockchat.Count - 1
    If Winsockchat(Counter).State <> sckClosed Then
      
      Winsockchat(Counter).Close
      
      If Counter >= 1 Then Unload Winsockchat(Counter)
    End If
  Next
  
  blnConnected = False
  blnServer = False
End Sub

Private Sub Winsockchat_SendComplete()
blnSendCompleted = True
End Sub




Client:

Code:
Option Explicit

Dim connected As Boolean

Private Sub Form_Load()
  connected = False
End Sub


Private Sub Command1_Click()
   Dim result As String
     
     
    If nick = "" Then
       Text3.Text = "Gib erstmal deinen Nick an"
       Form1.Show
       Text4.Enabled = False
    
      Else
       nick.Enabled = False
       result = InputBox("Geben sie das Passwort ein:", "client")
        
    If result = "a" Then
    
        Command1.Enabled = False
        Text4.Enabled = True
        Text1.Enabled = False
        Text2.Enabled = False
        
        If connected = True Then
        
           Winsock1.Close

        Else
    
           Winsock1.RemoteHost = Text1.Text
           Winsock1.RemotePort = Text2.Text
           Winsock1.Connect
           Screen.MousePointer = vbHourglass
        End If
        
      ElseIf result = "" Then
       MsgBox "Falsches Passwort freundchen"
       Text4.Enabled = False
       Form1.Show
       nick.Enabled = True
    
            
      Else: MsgBox "EY Schweinemensch...überleg doch mal ein bisschen"
       Text4.Enabled = False
       result = InputBox("Geben sie das Passwort ein:", "Connect")
          
      
    End If
    
    If connected = True Then
   
  End If

    
 Text3.Text = ""
 End If
 
 End Sub



Private Sub Text4_KeyPress(KeyAscii As Integer)


    If KeyAscii = 13 Then
              If connected = True Then
                    If Text3 <> "" Then
                        Winsock1.SendData "<" & nick & ">: " & Text4.Text
                        Text4.Text = ""
                        KeyAscii = 0
                    End If
                Else
                    
                    MsgBox "Noch keine Verbindung vorhanden!", vbInformation, "Fehler"
                    
            End If
     
    End If


End Sub




Private Sub Command3_Click()
Winsock1.Close
Command1.Enabled = True
nick.Enabled = True
Text4.Enabled = False
Text1.Enabled = True
Text2.Enabled = True
Text3.Text = "Die Verbundung wurde unterbrochen"
Text4.Text = ""
End Sub

Private Sub label1_Click()
Unload Me
End Sub

Private Sub Timer1_Timer()
  
End Sub

Private Sub Winsock1_Close()
  If Winsock1 Then
  nick.Enabled = True
  Text1.Enabled = True
  Text2.Enabled = True
  Text4.Enabled = False
  Text3.Text = "Die Verbindung wurde unterbrochen!"
  Command1.Enabled = True
  Else: Text3.Text = "Sie sind verbunden"
  
  End If
  
End Sub

Private Sub Winsock1_Connect()
  
  Text4.Enabled = True
  
  connected = True
  Screen.MousePointer = vbNormal
  Text3.Text = Text3.Text & _
        "Verbindung aufgebaut!" & vbCrLf & vbCrLf

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  
  Dim data As String

  Winsock1.GetData data

  Text3.Text = Text3.Text & data & vbCrLf
  Text3.SelLength = Len(Text3.Text)
  
End Sub


Private Sub Winsock1_Error(ByVal Number As Integer, _
      Description As String, ByVal Scode As Long, _
      ByVal Source As String, ByVal HelpFile As String, _
      ByVal HelpContext As Long, CancelDisplay As Boolean)

  Me.MousePointer = vbNormal
  MsgBox "Fehler in der Verbindung:" & vbCrLf & vbCrLf & _
        Description, vbExclamation, "Verbindungsfehler"
  Winsock1.Close
  Command1.Caption = "&Verbinden"
  connected = False
End Sub

Mfg Gringo
 
Zuletzt bearbeitet:
Echt coole Fehlermeldung die du da hast.... wie war die doch gleich? :rolleyes:

Am besten immer dazuschreiben, wie die Fehlermeldung lautet und noch besser wann und wo der Fehler auftritt - ein Klick auf "Debug" machts möglich.
 
hi

sry hab vergessen den Fehler zu beschreiben, hab ihn aber schon behoben.
Ich hab jedoch schon das nächste problem.Ich möchte
das alle Benutzer (Clients) auf dem Server aufgelistet
werden.Dann wenn ich auf einen bestimmten Client klicke (also
der in der Liste steht), soll nur der eine Client die Nachricht vom Server
erhalten.Später möchte ich noch, dass man vom Server aus einzelne
Benutzer vom Server kicken kann und das alles mit vb6,falls das überhaupt
möglich ist, aber wenn ich die Clients schon mal aifgelistet habe dürfte
es nicht so schwer sein die Befehle zu Programmieren!
Also wie mach ich es das ich über Winsock.connectionrequest die Clients
aufgelistet bekomme?
Ein paar tipps wären nicht schlecht...

Gringo
 
Zurück