Merhrzeiler und nur Nachricht für bestimmten nick anzeigen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Patrick1993.

    Merhrzeiler und nur Nachricht für bestimmten nick anzeigen

    Hallo Leute,
    Ich versuche mich derzeit mit TCP/IP. Ich habe mir als Vorlage den Client/Server aus dem Sourcecode gesucht und bin nun damit am Arbeiten.
    Ich will das ganze ggf in einem meiner Projekte anwenden. Jedoch muss ich dazu wissen wie ich Nachrichten anzeigen kann die nur zu einem bestimmten Nicknamen gehören und wie ich die Nachricht (mehrzeiler) in verschiedene Labels verpacken kann (sofern das geht).

    MFG
    Patrick

    Hi Patrick,

    soweit ich weiß kannst du Nachrichten auch in einem Stringbuilder packen und dann einzelnt auf der Serverseite auslesen lassen und dann in die Labels packen.
    Und das mit den Nachrichten, normalerweise hat jeder Client eine eigene Verbindung zum Server mit dieser Verbindung solltest du eig. auch die Nachrichten dem Nicknamen zuordnen können.

    P.s: Ich bin selbst noch bei TCP/IP dabei und lasse Systeminformationen auslesen und an einen Server senden, deins hört sich iwie ähnlich an :D

    Bin noch ein relativ unerfahrener Programmierer aber ich hoffe das hilft dir ein wenig o:

    Mfg
    Dende :D
    Die Frage ist ziemlich unspezifisch und ohne Code.
    Grundsätzlich benötigst du eine Art Protokoll für deinen Chat.
    Eine bereits bestehendes Protokoll wäre zB IRC oder XMPP (Multi User Chat).

    Du kannst dir aber auch ein ganz eigenes einfaches Protokoll überlegen.
    Wichtig ist dabei nur, dass du dir überlegst, wie du Befehle erkennst.
    Das heisst, du benötigst erstmal Befehle.
    Ein Befehl könnte zB MSG sein. Kommt dieser Befehl, dann handelt es sich um eine Nachricht.
    Danach könnte ein Ziel für die Nachricht kommen.
    z.B. MSG:Patrick:Ich bin eine privat Nachricht an Patrick.

    Die Syntax ist simple und an das IRC Protokoll angelehnt.
    Du kannst also festlegen, dass wenn der erste Teil bis zu einem : MSG ist, dass dann als 2. das Ziel kommt.
    Alles getrennt mit ":". Dabei darf der Nick zB kein ":" enthalten.

    Es kommt also darauf an, dass sowohl der Client weiss, welcher Befehle er senden kann und wie, und dass der Server diese auswertet.
    Bei diesem Beispiel würde der Server die Nachricht nur an einen User mit dem Nick Patrick weiterleiten, falls es einen solchen User gibt.
    Das ist meine Signatur und sie wird wunderbar sein!
    Wie kann ich denn "festlegen" wie bzw was ich für ein Befehl für was nutze ?
    Das mit dem Stribuilder hört sich an für sich recht easy an

    Das kannst du in deinem Code festlegen.

    Nehmen wir den Client aus dem Multiserver aus dem Sourcecodeaustausch.

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. streamw.WriteLine(TextBox1.Text)
    3. streamw.Flush()
    4. TextBox1.Clear()
    5. End Sub

    Hier sendet der Client seine Daten aus Textbox1.
    Nun gibt es mehrere Wege, Befehle zu integrieren.
    Entweder, der Benutzer muss diese eingeben. zB. /msg Patrick was geht?
    Du könntest auch für jeden User, mit dem du privat schreiben willst, ein Extra Control bereitstellen.
    zB über Tabpages und eine Richttextbox. Dann kann beim senden geprüft werden, in welchem Tab (bzw. dazu gehörigen User) befindest du dich.
    Dann sendest du den Befehl durch dein Programm mit

    VB.NET-Quellcode

    1. streamw.WriteLine(MSG & CurrentUser & ":" & TextBox1.Text)


    Das sind jetzt nur so ein paar Gedanken. Die genaue Implementierung ist dir überlassen.
    Das ist meine Signatur und sie wird wunderbar sein!
    @Dende():
    Ich habe in dem Startpost geschrieben das ich mir als Vorlage den Multiserver aus dem Sourcecodeaustausch genommen habe.
    Da hat sich bisher 0 geändert weil ich halt einen hänger hatte.

    @Mono:
    Dann müsste es Theoretisch ja mit einer Listbox in etwa so aussehen:

    VB.NET-Quellcode

    1. Dim user As String = Listbox1.SelectedItem
    2. streamw.writeline(user ":" Textbox1.text")


    Soweit sogut nur wie kann ich das ganze dann in der Anwendung wo die Texte dann ausgegeben werden wieder so auslesen das nur die Nachrichten mit dem Usernamen aus der Listbox angezeigt werden das ist an für sich der Knackpunkt (die befehle an sich sind mir recht piepe da es an für sich keine Funktion geben soll die für PN's gedacht ist).

    ich pushe mal wenn erlaubt da das Problem weiterhin besteht