Multiserver (TCP)

    • VB.NET

    Es gibt 854 Antworten in diesem Thema. Der letzte Beitrag () ist von ClonkAndre.

      Application?

      Hi !

      hab alles so gemacht wie dort steht, gefällt mir auch so sehr gut. :thumbup:
      Aber: was muss ich mit Application machen? habe MessageBox mit MsgBox ersetzt. Klappt auch aber
      mit was muss ich Application ersetzen oder muss ich deklariern? ?(

      Danke!
      Hallo

      Danke für die erklären ich hab da jetzt nur eine frage kann man auch ein Privat chat draus machen also user(x) mit user(y)

      es mußte praktisch in client hinzugefügt werden send an: user(y)

      und der server muß es es dann an user(y) senden und anderes herrum auch

      nur die frage ist wie geht sowas

      gruß

      DeMa
      Oder du machst die Möglichkeit z.B. das in den Client zu schreiben : "/User1 Hi"

      Dann testet der Server so, ob es den User1 gibt und sendet ihm das dann:

      VB.NET-Quellcode

      1. For Each c As Connection In list ' für alle Clients testen
      2. If message.Contains("/" & c.nick) Then
      3. SendToOneClient(c, "User2 (privat): " & message.Remove(0, c.nick.Length + 2)) ' An einen weitersenden
      4. End If
      5. Next


      Schon hast du deinen Privat Chat im Multi Chat...

      Wenn du es nur ein Einzelchat werden soll, dann Geht das noch einfacher, das kannst du dann selber testen : P

      mfG NIbel
      Hey, super Code.

      Habe schon ein bisschen dazu geschrieben...

      Nun will ich aber noch folgendes reinbauen und benötige ein bisschen Hilfe.

      - Moderatorrechte

      Mit den Moderatorrechten sollen sich Nachrichten für ALLE löschen lassen und es soll eine IP bann Funktion drinne sein. D.h wenn eine bestimmte IP Adresse coneccten will, dass er einfach nicht in den Chat kommt.

      - Smileys

      Es sollen Smiley´s gesendet und empfangen werden.

      - Schriftarten

      Es sollen verschiedene Schriftarten d.h Schriftfarben ect. gesendet und empfangen werden.

      - Online User

      Es soll eine Liste mit allen Online Usern da sein.



      Hoffe das mir da jemand ein bisschen helfen kann.

      mfG.
      Ich

      Samus Aran schrieb:

      Lass MessageBox da stehen, MsgBox ist veraltet. ;)
      Application kannst du eig. auch da stehen lassen, kommen bei dir Fehler?

      hää??? ich weiß das hört sich jetzt komisch an -.- aber jetzt nichmehr -.-
      komisch... egal
      danke trotzdem :thumbup:

      habe den ersten quellcode in so ein konsolenanwendungmodul reingesteckt und den anderen dann in Windows Form Anwendung.
      wenn ich jetzt starte kommt natürlich die konsolenanwendung mit
      "Der Server läuft!"
      Und dann nichts... :|

      hab schon bei MyProjekt -> Startobjekte verändert aber wenn ich auf Form1 Stelle kommen zwar beide aber:

      konsolenanwendung: kein text

      Form1: name eintragen geht
      dann drück ich ok und ich seh die form1 nur halber und bekomme eine messagebox mit "verbindung zum server nicht möglich"

      was nicht verwunderlich ist da ja auch nicht das ok in der konsolenanwendung gegeben wurde

      wisst ihr warum? hab ich was falsch gemacht? :pinch: ?( danke schonmal

      wens interessiert bei mir kam die ganze zeit das ich Application nicht deklariert habe

      Werewolve schrieb:

      Um eine User-online-Liste zu erstellen musst du diese Veränderungen vornehmen:

      Am Client:

      1) eine Listbox1 zur Form hinzufügen
      2) Die "AddItem" Sub so verändern:

      VB.NET-Quellcode

      1. Public Sub AddItem(ByVal s As String)
      2. Dim userlist As String()
      3. If s.StartsWith("/u ") Then
      4. userlist = s.Remove(0, 3).Split(",")
      5. ListBox1.Items.Clear()
      6. ListBox1.Items.AddRange(userlist)
      7. Else
      8. RichTextBox1.Text = RichTextBox1.Text & s & vbCrLf
      9. End If
      10. End Sub


      Man könnte es auch in die "Listen()" sub eingaben nur so geht man den Delegates aus dem Weg.


      Am Server:


      1) Erstellst diese Sub:

      VB.NET-Quellcode

      1. Public Sub Userlist()
      2. Dim users As String = ""
      3. For Each Connections In list
      4. users = users & Connections.nick.ToString & ","
      5. SendToAllClients("/u " & users)
      6. Next
      7. End Sub


      2) Dann schreibst du in die "Main()" Sub hinter:

      VB.NET-Quellcode

      1. list.Add(c)


      das

      VB.NET-Quellcode

      1. Userlist()


      Das wars. Sollte funktionieren!

      Ist nicht das Sauberste aber funktioniert bei mir!


      MFG
      Werewolve


      Guten Tag!
      Hab jetzt alles soweit gemacht!
      Nur die Listbox in Listview umgeändert jetzt sieht der Code so aus:

      VB.NET-Quellcode

      1. Dim userlist As String()
      2. If s.StartsWith("/u ") Then
      3. userlist = s.Remove(0, 3).Split(",")
      4. ListView1.Items.Clear()
      5. ListView1.Items.Add("Butler").ForeColor = Color.Red
      6. ListView1.Items.Add(userlist).ForeColor = Color.Green
      7. Else
      8. RichTextBox1.AppendText(s + vbNewLine)
      9. End If


      Aber jetzt kommt der Fehler:

      VB.NET-Quellcode

      1. 'Fehler 1 Fehler bei der Überladungsauflösung, da keine zugreifbare "Add" mit diesen Argumenten aufgerufen werden kann:
      2. '"Public Overridable Function Add(value As System.Windows.Forms.ListViewItem) As System.Windows.Forms.ListViewItem": Der Wert vom Typ "1-dimensionales Array von String" kann nicht in "System.Windows.Forms.ListViewItem" 'konvertiert werden.
      3. '"Public Overridable Function Add(text As String) As System.Windows.Forms.ListViewItem": Der Wert vom Typ "1-dimensionales Array von String" kann nicht in "String" konvertiert werden.


      Wäre nett wenn du mir helfen könntest!
      /e: Mit Listbox hat es funktioniert!

      MFG
      verwende AddRange(bzw. durchlaufe userlist, was ja ein String-Array darstellt, mit einer Schleife, damit du auch noch die ForeColor festlegen kannst...)
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---

      VB.NET-Quellcode

      1. ListView1.Items.AddRange(userlist).ForeColor = Color.Green



      Fehler:

      Quellcode

      1. Fehler 1 Fehler bei der Überladungsauflösung, da keine zugreifbare "AddRange" mit diesen Argumenten aufgerufen werden kann:
      2. "Public Sub AddRange(items As System.Windows.Forms.ListView.ListViewItemCollection)": Der Wert vom Typ "1-dimensionales Array von String" kann nicht in "System.Windows.Forms.ListView.ListViewItemCollection" konvertiert werden.
      3. "Public Sub AddRange(items() As System.Windows.Forms.ListViewItem)": Ein Wert des Typs "1-dimensionales Array von String" kann nicht in "1-dimensionales Array von System.Windows.Forms.ListViewItem" konvertiert werden, da "String" nicht von "System.Windows.Forms.ListViewItem" abgeleitet ist.
      (bzw. durchlaufe userlist, was ja ein String-Array darstellt, mit einer Schleife, damit du auch noch die ForeColor festlegen kannst...)
      wenn ich etwas in Klammernschreibe, ist nicht unbedingt unwichtig...also verwende eine Schleife:

      VB.NET-Quellcode

      1. For Each zl As String In userlist
      2. ListView1.Items.Add(zl).ForeColor = Color.Green
      3. Next
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      Hi, habe jetzt im Clienten hinzugefügt, dass man auch andere Schriftarten benutzen kann.

      Ich benutze dazu diesen Code:

      VB.NET-Quellcode

      1. Dim oFont = New Font("Arial", 10, FontStyle.Bold)
      2. Label1.Font = oFont

      Hier wird der Text Fett geschrieben! =D

      Jetzt habe ich 2 Schwirigkeiten und hoffe auf eure Hilfe.

      Wenn ich den Text absende, wird er nicht mit der neuen Schrift gesendet, sondern sendet den Text nur mit der Standartschrift!

      Ich denke, dass ich i.was im Server, also in der Konsolenanwendung ändern muss.

      Kann mir jemand helfen?

      mfG.
      Ich
      Normalerweise sollte doch dann in der ListBox1 die Schriftfarbe ect. genauso angezeigt werdenm wie ich sie gesendet habe.
      Ist aber nicht so!

      Jeder der im Chat ist, soll in der ListBox1 (wo die Nachrichten angezeigt werden) die Schrift sehen, die der Absender verwendet hat.

      Wie geht das?

      mfG.
      Ich

      //Edit:
      Und wenn ich jetzt etwas senden will, wird es weder im Server noch im CLient angezeigt..

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


      Private Sub SendToAllClients(ByVal s As String)
      For Each c As Connection In list ' an alle clients weitersenden.
      Try
      c.streamw.WriteLine(s)
      c.streamw.Flush()
      Catch
      End Try
      Next
      End Sub


      wie du hier sehen kannst werden alle clienten in einer Schleife durchlaufen und bei jedem einzelnen ein Text gesendet. Stattdessen kannst du natürlich einen einzelnen Clienten verwenden ;)
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---