TCP/IP server "Flüstern" funktion - macht nix

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von gfcwfzkm.

    TCP/IP server "Flüstern" funktion - macht nix

    Hi,

    ich möchte meinem Server eine flüstern-Funktion geben.
    Zurzeit arbeite ich intensiv daran, aber es passiert nix.

    Hier mal mein Stück CodeKuchen:

    VB.NET-Quellcode

    1. Private Sub ListenToConnection(ByVal con As Connection)
    2. Do
    3. Try
    4. Dim min As String = CStr(My.Computer.Clock.LocalTime.Minute)
    5. Dim hour As String = CStr(My.Computer.Clock.LocalTime.Hour)
    6. Dim tmp As String = con.streamr.ReadLine
    7. Console.WriteLine(hour & ":" & min & " " & con.nick & ": " & tmp)
    8. For Each c As Connection In list
    9. Try
    10. c.streamw.WriteLine(con.nick & ": " & tmp)
    11. c.streamw.Flush()
    12. If tmp.StartsWith("/kick") Then
    13. Dim Kickname As String = tmp.Remove(0, 6)
    14. For Each Connect In list
    15. If Connect.nick = Kickname Then
    16. SendToAllClients("--> " & Kickname & " wurde gekickt.")
    17. Sendtoperson("/kicked", Kickname)
    18. Console.WriteLine(Kickname & " wurde gekickt.")
    19. Exit For
    20. End If
    21. Next
    22. ElseIf tmp.StartsWith("/send") Then
    23. Dim text As String = tmp.Remove(0, 6)
    24. Dim message As String
    25. Dim strArr As String()
    26. strArr = text.Split(Convert.ToChar(">"))
    27. message = strArr(1).Replace("<", "")
    28. Dim nickArr As String()
    29. nickArr = text.Split(Convert.ToChar(" "))
    30. Dim NickName As String = nickArr(1)
    31. For Each Connect In list
    32. If Connect.nick = NickName Then
    33. Sendtoperson(message, NickName)
    34. Console.WriteLine("VON: " & con.nick & " AN: " & NickName)
    35. Console.WriteLine(message)
    36. End If
    37. Next
    38. End If
    39. Catch
    40. End Try
    41. Next
    42. Catch
    43. list.Remove(con)
    44. Userlist()
    45. Console.WriteLine(con.nick & " ist gegangen.")
    46. Exit Do
    47. End Try
    48. Loop
    49. End Sub

    Nix, es führ nur das

    VB.NET-Quellcode

    1. c.streamw.WriteLine(con.nick & ": " & tmp)
    2. c.streamw.Flush()
    aus...

    Was hab ich falsch gemacht?

    PS: Der Client gibt: /send Username <Hallo Welt> ein. Ist vielleicht da was Falsch?

    mfg

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

    Problem gelöst. Neues Problem da.

    Die Nachricht wird doppelt gesendet. Aber warum?

    PS: Hier meine änderung:

    VB.NET-Quellcode

    1. Try
    2. If tmp.StartsWith("/kick") Then
    3. Dim Kickname As String = tmp.Remove(0, 6)
    4. For Each Connect In list
    5. If Connect.nick = Kickname Then
    6. SendToAllClients("--> " & Kickname & " wurde gekickt.")
    7. Sendtoperson("/kicked", Kickname, "Admin")
    8. Console.WriteLine(Kickname & " wurde gekickt.")
    9. Exit For
    10. End If
    11. Next
    12. ElseIf tmp.StartsWith("/send") Then
    13. Dim text As String = tmp.Remove(0, 6)
    14. Dim message As String
    15. Dim strArr As String()
    16. 'strArr = text.Split(Convert.ToChar(">"))
    17. 'message = strArr(0).Replace("<", "")
    18. Dim nickArr As String()
    19. nickArr = text.Split(Convert.ToChar(" "))
    20. strArr = text.Split(Convert.ToChar("<"))
    21. message = strArr(1).Replace(">", "")
    22. Dim NickName As String = nickArr(0)
    23. message.Replace(NickName, "")
    24. For Each Connect In list
    25. If Connect.nick = NickName Then
    26. Sendtoperson(message, NickName, con.nick)
    27. Console.WriteLine("VON: " & con.nick & " AN: " & NickName)
    28. Console.WriteLine(message)
    29. End If
    30. Next
    31. Else
    32. c.streamw.WriteLine(con.nick & ": " & tmp)
    33. c.streamw.Flush()
    34. End If
    35. Catch
    36. End Try
    37. Next
    38. Catch
    39. list.Remove(con)
    40. Userlist()
    41. Console.WriteLine(con.nick & " ist gegangen.")
    42. Exit Do
    43. End Try
    44. Loop
    45. End Sub
    46. Private Sub Sendtoperson(ByVal s As String, ByVal Nick As String, ByVal Sender As String)
    47. For Each Connection In list
    48. Try
    49. If Connection.nick = Nick Then
    50. Connection.streamw.WriteLine(s)
    51. Connection.streamw.Flush()
    52. End If
    53. Catch
    54. End Try
    55. Next
    56. End Sub


    Könnt ihr mir das erklären? ich verstehe es net...

    mfg
    Client schreibt: /send username <Hi, wie geht's?>

    Server sendet: Hi, wie geht's? jedoch 2mal.
    Er soll dies aber nur einmal machen...

    mfg

    EDIT:// Hier ein bild, das mein problem zeigt.
    Bilder
    • Unbenannt.PNG

      275,33 kB, 693×441, 137 mal angesehen

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