User im Chat auflisten

  • VB6

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von felix.

    User im Chat auflisten

    Hi, ich hab noch eine frage, zum chat.


    Wie kann ich beim Clienten Programm die Chatter die sich im Chat befinden auflisten?

    Der name der liste ist list1


    PS: Beim Server funktioniert es, bloß die Chatter gehen nicht mehr aus der Liste heraus. Aber das ist eine andere Geschichte
    Hi,

    Wie kann ich beim Clienten Programm die Chatter die sich im Chat befinden auflisten?

    Der name der liste ist list1


    Antwort:
    list1.AddItem NameDesChatters

    oder was sollen wir auf diese Frage antworten??? Du solltest mittlerweile wissen, dass KEINER Lust hat zu raten wie Dein Quelltext aussieht. Also poste mehr Infos.


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LaMa5“ ()

    Da wir hier im Netzwerk/Internet-Forum sind, nehme ich an, dass du nicht weißt, wie du es generell umsetzen musst, damit bei jedem jeder Name angezeigt wird ??

    Sobald beim Server ein neuer User den Chat betritt, sendest du einfach diesen Nick an alle anderen user, so wie du auch Chatnachrichten versendest, aber du musst beides auseinander halten, damit der Client weiß, ist das ne Nachricht oder ein neuer User.

    Schau dir einfach mal den Beispiel-Chat in unserem FAQ an, da ist das alles schon gemacht!
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Hier eine Möglichkeit, wen du die Liste im Server hast:

    Du sendest alle 500ms vom Server die Komplette Liste mit irgendeinem Code davor, damit sich das Programm auskennt.

    Dann Trennst du die mit einem z.B. ";" getrennten User und Listest Sie auf.
    Das kenn ich doch schon ich wollte nicht wissen, wie ich einen chat mache ,sondern wie ich bei dem client die anderen die im Chat sind auflisten kann.

    Ich benutze dieses Turtol

    da steht aber nicht drin, wie ich bei den clienten die user die im chat sind auflisten kann
    Ach so, entschuldige! Ich dachte, dass es in diesem Chat auch eine "Benutzerliste" gibt.
    Also ich hab dir mal eben eine Session (bzw. Datenverkehr) gestalltet:

    Folgende Rechner:
    -Server (Nick: felix)
    -C1 (Client, der bereits verbunden ist; Nick: Marcus)
    -C2 (weiterer Client, der bereits verbunden ist; Nick: Agent)
    -C3 (Client, der sich Verbinden wird; Nick: jue)

    C3 verbindet sich zum Server, folgeneder Datenverkehr findet statt:

    Von PC -> Zu PC: Nachricht
    C3 -> S: [new Jue
    S -> C3: [list felix;Marcus;Agent;Jue
    S -> C1: [list felix;Marcus;Agent;Jue
    S -> C2: [list felix;Marcus;Agent;Jue


    C2 trennt die Verbindung und verlässt somit den Chat, folgender Datenverkehr findet statt:

    Von PC -> Zu PC: Nachricht
    S -> C1: [list felix;Marcus;Jue
    S -> C2: [list felix;Marcus;Jue


    Wie du siehst hab ich alle Befehle mit einem "[" eingeleitet. Deshalb musst du abfragen, ob das 1. Zeichen des ankommenden Stringes ein "[" ist. Wenn nicht, ist es eine einfache Chatnachricht. Wenn ja, musst du den Befehl interpretieren.

    Wenn der Client einen list-Befehl bekommt, löscht er die User-Liste und schreibt einfach alle mitgesendeten Namen rein.
    Wenn der Server einen new-Befehl bekommt, speichert er den Nick zu den anderen Nicks (z.B. in ein Array) und sendet dann die ganze Liste an die Clients.
    Wenn ein Rechner die Verbindung trennt, muss der Server den jeweiligen Nickname aus seiner Liste (nzw. Array) löschen und die komplette Liste wieder an die noch verbundenen Clients schicken.



    So ich hoffe, das waren ein paar Gedankenanstöße, die dir helfen. Wenn du Programmteile brauchst meld dich noch mal.

    Jue ;)
    Ersteinmal vielen dank, so änlich habe ich mir es auch vorgestellt, nur ich habe leider nicht genügend erfahrung mit der programmierung, es wäre nett wenn ihr mit sagen könntet, wie ich die liste an die user schicken kann.
    Das is das was ich gemeint hatte. Schau dir den Code an und finde heraus, wie du den Server eine "stinknormale" Chatnachricht senden lassen kannst. Dann sendest du das, was Jue dir aufgelistet hat als Chat-Nachricht(!).

    Was du vielleicht nich kapiert hast ist, dass man das als chatachricht schreiben musst.
    Hi,

    @felix
    was erwartest Du von uns???
    Sollen wir für Dich einen Chat programmieren oder möchtest Du Hilfe bei Deinem Projekt???

    Wenn wir bei Dir bei Deinem Projekt helfen sollen, reichen Aussagen wie:
    Also ich habe es ausprobiert, und ich habe es nicht geschaft

    nicht aus!!
    Was hast Du probiert und nicht geschafft???
    Du hast noch nicht eine Zeile Quellcode präsentiert!! Das einzige was Du uns zur Verfügung stellst, ist das Beispiel aus dem Dein Projekt hervorgeht.
    [Ironie] Jetzt weiß jeder von uns wie Dein Quellcode aussieht und wo Dein Problem liegt. [/Ironie]

    Du hast einige Lösungsansätze bekommen (Agent, Jue, Mad Andy). Du gehst mit keiner Silbe auf einen dieser Vorschläge ein!! Statt dessen machst Du hier sinnlose Doppelpost's in denen Du nach Antworten drängelst.
    Damit hast Du gleich gegen 2 Boardregeln verstossen!!
    ...
    Mehrere Postings hintereinander in einem Thread (Thema) sind
    nur erlaubt, wenn dies unbedingt erforderlich ist, ansonsten
    gibt es eine Verwarnung wegen Spams.
    ...
    Ebenfalls als Spam angesehen werden sehr kurze Beiträge in der Art:
    Frage "Suche AddIn", Antwort "Ich auch".
    ...


    Entweder Du rückst endlich mal ein paar mehr Informationen raus, oder Du musst zusehen, woher Du Deine Hilfe bekommst.


    bye ...

    LaMa5.

    P.S.
    Dies ist kein persönlich Angriff gegen Dich. Ich finde es nur unmöglich wie Du Dich hier im Forum bewegst. Du kannst nicht davon ausgehen, dass alle nur für Dich da sind. Auch andere haben wichtige Projekte und machen nicht solchen Stress.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de

    Server quellcode

    Also ich habe nun für euch hier den Quellcode vom Server. Hoffe das reicht. :)

    Option Explicit

    Private blnConnected As Boolean ' Ist True, wenn im Chat, bzw. auf Verbindung wartend
    Private strNick As String ' Name, den der User im Chat verwendet
    Private blnServer As Boolean ' Kennezeichnet, ob dieser User der Server ist

    Private blnSendCompleted As Boolean ' Gibt an, ob die letzte Nachricht fertig gesendet wurde

    Private Sub Senden(strData As String, Optional Index As Integer = 0)
    ' Sendet Daten mit den Winsock und wartet ab,
    ' bis diese wirklich gesendet wurden

    blnSendCompleted = False

    If wsckChat(Index).State = sckConnected Then
    ' Daten senden, wenn verbunden
    wsckChat(Index).SendData strData

    ' Warten bis Daten gesendet
    Do Until blnSendCompleted
    DoEvents
    Loop
    End If
    End Sub

    Private Sub AddMessage(strMessage As String, strSender As String)
    ' Fügt einen Text in die Nachricht-Liste ein
    ' strMessage ist die Nachricht, die hinzugefügt werden soll
    ' strSender ist der Absender der Nachricht (erscheint bei der Nachricht)

    ' In's Chat-Fenster einfügen
    txtChat.Text = txtChat.Text & _
    Trim(strSender) & ": " & _
    strMessage & vbCrLf

    txtChat.SelStart = Len(txtChat.Text) ' An den Schluss des Chat scrollen
    End Sub

    Private Sub ForwardMsg(strData As String, intExcludeIndex As Integer)
    '---- Variablendeklarationen
    Dim intCounter As Integer ' Zählervariable
    '---------------------------

    ' Nur in Schleife gehen, wenn Verbindungen offen sind
    If wsckChat.Count > 1 Then
    ' Alle Winsocks durchlaufen
    ' Fängt bei 1 an, da 0=Server
    For intCounter = 1 To wsckChat.Count - 1
    ' Wenn dieser Index excluded (ursprünglicher Sender der Msg), dann nicht weiterleiten
    If intCounter <> intExcludeIndex Then
    Senden strData, intCounter
    End If
    Next
    End If
    End Sub

    Private Sub EnableButtons()
    ' Aktiviert bzw. deaktiviert die Buttons
    ' Wenn Connected, dann Oberfläche für chatten "einrichten". Sonst sperren
    txtName.Enabled = Not blnConnected ' Der Name darf nicht mehr geändert werden wenn connected

    txtNachricht.Enabled = blnConnected
    cmdSend.Enabled = blnConnected
    txtChat.Enabled = blnConnected

    txtChat.Text = "" ' Chat-Fenster leeren
    End Sub

    Private Function GetNextFreeIndex() As Integer
    ' Gibt den Index eines Winsock-Controls zurück, welches geschlossen ist
    ' Wenn kein geschlossenes Control gefunden wird, wird eines geladen
    Dim intCounter As Integer
    For intCounter = 1 To wsckChat.Count - 1
    If wsckChat(intCounter).State = sckClosed Then
    ' Das ist geschlossen!
    GetNextFreeIndex = intCounter
    Exit Function
    End If
    Next

    ' Es wurde kein geschlossenes Control gefunden -> Neues laden
    GetNextFreeIndex = wsckChat.Count
    Load wsckChat(GetNextFreeIndex)
    End Function
    Private Sub cmdCancel_Click()
    ' Die Verbindung beenden
    Dim Counter As Integer

    ' Alle geladenen Controls durchlaufen
    For Counter = 0 To wsckChat.Count - 1
    If wsckChat(Counter).State <> sckClosed Then
    ' Wenn nicht geschlossen, dann Verbindung schliessen
    wsckChat(Counter).Close
    ' Control entladen, wenn nötig
    If Counter >= 1 Then Unload wsckChat(Counter)
    End If
    Next

    blnConnected = False ' Nein, nu bin ich nimmer im Chat...
    blnServer = False ' ... also bin ich auch nicht mehr Server
    EnableButtons ' Buttons wieder enablen
    End Sub
    Private Sub cmdListen_Click()
    ' Programm wird in Listen-Status versetzt. Es wird auf einen Connect gewartet

    If Trim(txtName.Text) = "" Then txtName.Text = "Felix" ' Nick nicht eingegeben
    strNick = Left(txtName & Space(50), 50) ' Den Nick speichern. Nick MUSS 50 Zeichen lang sein

    blnConnected = True ' Ja, ich bin im Chat
    blnServer = True ' Ich bin der Server
    EnableButtons ' Buttons disablen

    wsckChat(0).LocalPort = 9810 ' Chat läuft auf Port 12123
    wsckChat(0).Listen ' Ab jetzt wird auf einkommende Connections gewartet
    Command2.Visible = True
    cmdListen.Visible = False
    End Sub

    Private Sub cmdSend_Click()
    ' Sendet den Text in txtNachricht an den verbundenen Rechner

    '---- Variablendeklarationen
    Dim strMessage As String ' Text, der übers Netzwerk gesendet wird
    '---------------------------

    ' Prüfen ob überhaupt ein Text eingegeben
    If Trim(txtNachricht.Text) <> "" Then
    strMessage = "0" & strNick & _
    txtNachricht.Text

    If blnServer Then
    ' Wenn Server, dann an alle
    ForwardMsg strMessage, 0
    Else
    Senden strMessage, 0 ' Die Nachricht an den Server (Index=0) senden
    End If

    ' Nachricht in Chat-Fenster einfügen
    AddMessage txtNachricht.Text, strNick

    ' Text-Box mit der Nachricht leeren. Sieht besser aus ;)
    txtNachricht.Text = ""
    End If
    End Sub

    Private Sub Command1_Click()
    Me.Visible = False
    End Sub

    Private Sub Command2_Click()
    AddMessage "Der Server wird nun vorrübergehend abgeschaltet, oder neugestartet. Falls sie sich längere Zeit nicht zum Server connecten können, ist der Server noch nicht wieder eingeschaltet. Versuchen sie es bitte dann erneut. Vielen Dank - Ihr Knuffels.aw3.de TEAM", "Manu und Julian"
    wsckChat(0).Close
    cmdListen.Visible = True
    Command2.Visible = False
    End Sub
    Private Sub Form_Load()
    blnServer = False
    blnSendCompleted = True
    End Sub
    Private Sub wsckChat_Close(Index As Integer)
    If blnServer Then
    ' Server, ein Client hat disconnected
    List1.Text = strNick
    List1.RemoveItem List1.ListIndex
    If Index = 0 Then
    ' Server selbst hat "dicsonnected"
    blnConnected = False ' Nein, nu bin ich nimmer im Chat...
    blnServer = False ' ... also bin ich auch nicht mehr Server
    EnableButtons ' Buttons wieder enablen
    Else
    AddMessage wsckChat(Index).Tag & " hat den Chat verlassen", "Felix"
    ForwardMsg Left("Felix" & Space(50), 50) & _
    wsckChat(Index).Tag & " hat den Chat verlassen", Index

    ' Verbindung schliessen
    wsckChat(Index).Close
    End If
    Else
    ' Client, melden dass Connection beendet
    AddMessage "Die Verbindung zum Server wurde beendet", "Felix"
    blnConnected = False ' Nein, nu bin ich nimmer im Chat...
    blnServer = False ' ... also bin ich auch nicht mehr Server
    EnableButtons ' Buttons wieder enablen
    End If
    End Sub

    Private Sub wsckChat_Connect(Index As Integer)
    ' Wenn ein Client auf dem Server angenommen wird, dann dem Server Infos senden
    Senden "1" & strNick
    End Sub

    Private Sub wsckChat_ConnectionRequest(Index As Integer, ByVal requestID As Long)
    ' Es versucht einer zu connecten

    ' Verbindung annehmen
    wsckChat(GetNextFreeIndex).Accept requestID
    End Sub

    Private Sub wsckChat_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    ' Wird ausgelöst, wenn Daten vom Netzwerk reinkommen

    '---- Variablendeklarationen
    Dim strData As String ' Daten die übers Netzwerk reingekommen sind

    Dim strNick As String ' Der Nick des Users, der die Msg sendet
    Dim strMessage As String ' Nachricht, die gesendet wird
    '---------------------------

    wsckChat(Index).GetData strData ' Die Daten einlesen

    ' Erstes Zeichen auswerten
    If Left(strData, 1) = "0" Then
    ' Chat-Nachricht
    strNick = Trim(Mid(strData, 2, 50)) ' Den Nick speichern
    strMessage = Mid(strData, 52) ' Die Nachricht speichern

    AddMessage strMessage, strNick ' Nachricht in Chat-Fenster aufnehmen

    ' Wenn als Server, dann muss die Nachricht an alle Clients weitergeleitet werden
    If blnServer Then ForwardMsg strData, Index

    ElseIf Left(strData, 1) = "1" Then
    ' Benutzername wird gesendet
    strNick = Trim(Mid(strData, 2, 50))

    If blnServer Then
    ' Tag setzen. Der Tag enthält den Benutznamen
    wsckChat(Index).Tag = strNick
    ' An alle anderen User senden, dass neuer User
    ForwardMsg Left("Felix" & Space(50), 50) & "1" & strNick, Index
    End If

    ' Nachricht ausgeben
    AddMessage strNick & " betritt den Chat.", "Felix"
    'Den neuen User in die Liste aufnehmen
    List1.AddItem strNick
    End If
    End Sub

    Private Sub wsckChat_SendComplete(Index As Integer)
    ' Die Daten wurden gesendet
    blnSendCompleted = True
    End Sub