Multiserver (TCP)

    • VB.NET

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

      @KenJy_L4F Ja, du kannst an den Browser, welcher sich versucht hat auf deinen Server zu connecten, eine Nachricht senden.

      Baue dir einfach den SendToAllClients(ByVal s As String) Sub so um, dass du einen neuen Sub erhältst, mit welchem du an nur 1. Client, den Browser, eine Nachricht übermitteln kannst.

      VB.NET-Quellcode

      1. Private Sub SendToAllClients(ByVal s As String)
      2. For Each c As Connection In list ' an alle clients weitersenden.
      3. Try
      4. c.streamw.WriteLine(s)
      5. c.streamw.Flush()
      6. Catch
      7. End Try
      8. Next
      9. End Sub

      ps.: Je nach Browser kommt es vor, dass dieser keinen richtigen String Wert übermittelt.
      Dann würde in dieser Zeile c.nick = c.streamr.ReadLine dein Server Crashen, weil du versuchst etwas zu lesen, was nichts ist.

      VB.NET-Quellcode

      1. Dim _CatchOccured As Boolean = False
      2. Try
      3. c.auth_msg = c.streamr.ReadLine.ToString '
      4. Catch
      5. _CatchOccured = True
      6. End Try

      Danach kannst du prüfen ob 1. _CatchOccured nicht True ist und 2. mit RegEx, ob die auth_msg mit deiner vordefinierten übereinstimmt.
      @KenJy_L4F
      ich habe mal das gebastelt dürfte das sein was du suchst :)

      VB.NET-Quellcode

      1. Sub Main()
      2. Console.WriteLine("Der Server läuft!")
      3. server = New TcpListener(ipendpoint)
      4. server.Start()
      5. While True
      6. client = server.AcceptTcpClient
      7. Dim c As New Connection
      8. c.stream = client.GetStream
      9. c.streamr = New StreamReader(c.stream)
      10. c.streamw = New StreamWriter(c.stream)
      11. Dim tmp As String = c.streamr.ReadLine ' warten, bis etwas empfangen wird...
      12. If tmp.StartsWith("GET ") = True And tmp.EndsWith("HTTP/1.1") = True Then
      13. Console.WriteLine("-------------------------------!! WARNUNG !!-------------------------------" & vbCrLf & "Es wird versucht über das Internet auf den Server zu zugreifen!" & vbCrLf & "Wenn dies gewollt ist ist alles okay. Wenn nicht könnte es ein Problem sein!" & vbCrLf & "-------------------------------!! WARNUNG !!-------------------------------")
      14. End If
      15. Console.WriteLine(client.Client.RemoteEndPoint.ToString.Split({":"}, StringSplitOptions.RemoveEmptyEntries)(0) & " has try to connect at port " & ipendpoint.Port.ToString)
      16. End While
      17. End Sub
      MFG 0x426c61636b4e6574776f726b426974
      InOffical VB-Paradise IRC-Server
      webchat.freenode.net/
      Channel : ##vbparadise

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „BlackNetworkBit“ ()

      wie kann ich eigentlich einbauen das der Server WEITER läuft und ich im Vordergrund nach befehlen per Server konsole frage und bei eingabe etwas geschiet?

      Und wie kann ich einen Speziellen User aus der Userlist / Cliuentliste entfernen -ich habe schon so umgerbaut das etwas geschiet wenn die Nachricht /kick geschrieben wird,würde aber gerne das der Username dahinter gefiltert und gekickt wird.?
      mach doch einfach einen neuen Thread auf der dann console.readline ausliest :)
      MFG 0x426c61636b4e6574776f726b426974
      InOffical VB-Paradise IRC-Server
      webchat.freenode.net/
      Channel : ##vbparadise
      Nop, hier ist ein kleines Beispiel :

      VB.NET-Quellcode

      1. Sub Main()
      2. Dim th As New Threading.Thread(AddressOf ReadConsole)
      3. th.Start()
      4. server.start()
      5. End Sub
      6. Public Sub ReadConsole()
      7. Do
      8. Dim ReadData As String = Console.ReadLine()
      9. Loop
      10. End Sub
      MFG 0x426c61636b4e6574776f726b426974
      InOffical VB-Paradise IRC-Server
      webchat.freenode.net/
      Channel : ##vbparadise
      Ich hab ein Problem bei dieser Code Zeile da zeigt es mir nähmlich immer einen Fehler an


      Fehler: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

      Code Zeile:

      VB.NET-Quellcode

      1. streamw.WriteLine(TextBox1.Text)


      aber das objekt existiert und ich weis nicht weiter
      Hey Leute, ich habe ein Problem.
      Ich kann irgendwie von aussen nicht auf den Server zugreifen, sobald ich die lokale IP eingebe, funktioniert es sofort.

      Als Fehlermeldung schmeißt der Client folgendes raus:
      "In die Übertragungsverbindung können keine Daten geschrieben werden: Eine bestehende Verbindung wurde softwaregesteuert

      durch den Hostcomputer abgebrochen."

      Und kurz darauf knallt der Server weg mit folgender Mitteilung:
      "[CRASH-REPORT] Von der Übertragungsverbindung können keine Daten gelesen werden: Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat."

      Es läuft derzeit über No-IP, meine öffentliche IP ist auch hinter dem Domain namen registriert, also wenn ich den host an pinge, dann löst er die IP sauber auf.
      Und der Port ist auch offen, habe ich mit einem Port Scanner probiert.
      @BlackNetworkBit
      Ich konnte nun deinen Vorschlag des Codes ausprobieren. Es ist zwar okay, ich weiß dann jetzt welche IP auf meinen Server zugreift, bringt mich aber nicht bei meinem Problem/ meiner Frage weiter...

      Die Frage war ja: Ist es möglich, dass wenn ich mit meinem Firefox auf den Server zugreife, bei Firefox (so wie in HTML) ein Text steht, oder ich Firefox umleiten kann auf eine andere URL. Denn wenn ich mit Firefox die IP + Port des Servers eigebe, lädt er unentlich lange und mein Server steht also die ganze Zeit "unter Strom".

      Mein Ziel ist es durch VB.Net und der Konsolenanwendung in Firefox einen Text auszugeben oder ihn umzuleiten. ^^
      Bellum et Pax.
      Omne initium est difficile.
      -KenJy ;D
      @KenJy_L4F
      Ich habe es dir doch schon geschrieben wie du das anstellen kannst ..
      hier noch mal ein Beispiel das dich auf google.de weiterleitet und einen Text ausgibt.

      VB.NET-Quellcode

      1. Imports System.Net.Sockets
      2. Module Module1
      3. Dim server As System.Net.Sockets.TcpListener
      4. Sub Main()
      5. Console.WriteLine("Der Server läuft!")
      6. Dim client As TcpClient
      7. server = New TcpListener(Net.IPAddress.Any, 80)
      8. server.Start()
      9. While True
      10. client = server.AcceptTcpClient
      11. Dim stream As NetworkStream = client.GetStream
      12. Dim streamr As IO.StreamReader = New IO.StreamReader(stream)
      13. Dim streamw As IO.StreamWriter = New IO.StreamWriter(stream)
      14. Dim tmp As String = String.Empty
      15. Dim http_get As Boolean = False
      16. Do
      17. tmp = streamr.ReadLine() ' warten, bis etwas empfangen wird...
      18. If tmp.StartsWith("GET ") = True And tmp.EndsWith("HTTP/1.1") = True Then
      19. http_get = True
      20. End If
      21. Loop Until tmp = String.Empty
      22. If http_get = True Then
      23. Console.WriteLine("-------------------------------!! WARNUNG !!-------------------------------" & vbCrLf & "Es wird versucht über das Internet auf den Server zu zugreifen!" & vbCrLf & "Wenn dies gewollt ist ist alles okay. Wenn nicht könnte es ein Problem sein!" & vbCrLf & "-------------------------------!! WARNUNG !!-------------------------------")
      24. streamw.WriteLine("HTTP/1.1 200 OK")
      25. streamw.WriteLine("Host: MYDOMAIN.COM")
      26. streamw.WriteLine("Server: DEINOS")
      27. streamw.WriteLine("Content-Type: text/html")
      28. Dim Text As String = "Test Text <script>document.location='//www.google.de'</script>"
      29. streamw.WriteLine("Content-Length: " & Text.Length.ToString)
      30. streamw.WriteLine("Connection: keep-alive")
      31. streamw.WriteLine(String.Empty)
      32. streamw.WriteLine(Text)
      33. streamw.Flush()
      34. End If
      35. End While
      36. End Sub
      37. End Module
      MFG 0x426c61636b4e6574776f726b426974
      InOffical VB-Paradise IRC-Server
      webchat.freenode.net/
      Channel : ##vbparadise

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „BlackNetworkBit“ ()

      Tut mitr leid... ._. Ich habe dann deine Antwort wie ich es machen kann nicht gesehen... Nur deine Antwort mit dem Script habe ich verstenden, war aber nicht dass was ich meinte... ^^ Dass war ungefähr genau dass was ich schon hatte...

      Aber danke noch mal ^^ Ich versuche denn jetzt mal zu verstehen wie dass Vunktioniert... ^^ ':/
      Bellum et Pax.
      Omne initium est difficile.
      -KenJy ;D
      Es gibt für solche Angelegenheiten den Hilfreich Button unten rechts neben jedem Post.
      MFG 0x426c61636b4e6574776f726b426974
      InOffical VB-Paradise IRC-Server
      webchat.freenode.net/
      Channel : ##vbparadise
      Soweit ich das jetzt verstanden habe will er aber davor noch einen Text anzeigen :)
      MFG 0x426c61636b4e6574776f726b426974
      InOffical VB-Paradise IRC-Server
      webchat.freenode.net/
      Channel : ##vbparadise