Multiserver (TCP)

    • VB.NET

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

      Integer ist eine 32-Bit Ganzzahl mit Vorzeichen...
      Wenn dir das nicht reicht nimm Long, mit 64-Bit
      Linux wird nie das meistinstallierte Betriebssystem sein. Bedenken Sie nur, wie oft man Windows neu installieren muss!
      :thumbsup:
      wie kann ich diese 32 bit (4 Byte) in einen String umwandeln ? Also das müssten ja dann 4 Zeichen sein.
      Visual Basic FTW :D
      Programmiere u.a. mit C# (XNA), Blitz Basic 3D, BlitzPlus , PHP.
      Dazu brauchst du die Bit-Shift Operatoren(ist zumindest mit denen am einfachsten), guck dir an wie die funktionieren, dann bekommst dus vlt. raus ;)
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      Man kann doch auch den NetworkSteam nutzen, der dem Streamwriter zugrunde liegt.

      Prinzipiell als Ansatz:

      VB.NET-Quellcode

      1. Dim num As Int32 = 23121
      2. Dim BtS As Byte() = BitConverter.GetBytes(num)
      3. c.stream.Write(BtS, 0, BtS.Length)


      Und Btw die Posts von HerrBert mit Inhalt wie:

      VB.NET-Quellcode

      1. Dim varInteger as INteger = 456 'dein Wert eben
      2. Dim varString as String = CInt(varInteger) 'damit wird einfach Integer in String umgewandelt



      sind grundsätzlich nicht zu empfehlen.

      Die alten Funktionen für Datentypenkonvertierung zu benutzen ist ja noch streitbar, aber ok.
      Doch einen Integer EXPLIZIT in einen Integer umuwandeln und ihn dann implizit in String zu konvertieren ist ja mal völliger Schwachsinn.

      einen Integer in String zu wandeln ist ganz leicht:

      VB.NET-Quellcode

      1. Dim num As Int32 = 23121
      2. Dim str As String = num.ToString
      Das ist meine Signatur und sie wird wunderbar sein!

      VB.NET-Quellcode

      1. Private Function WriteInt(ByVal Eingabe As Integer) As String
      2. Dim Ausgabe As String = ""
      3. For i As Integer = 0 To 3
      4. Ausgabe = Ausgabe & Chr((Eingabe And (255 * (256 ^ i))) / (256 ^ i))
      5. Debug.Print((Eingabe And (255 * (256 ^ i))) / (256 ^ i))
      6. Next
      7. Return Ausgabe
      8. End Function


      davor muss man allerdings den Writer-Codec anpassen. Dann funktioniert alles , so wie ich das wollte =)

      TimBo
      Visual Basic FTW :D
      Programmiere u.a. mit C# (XNA), Blitz Basic 3D, BlitzPlus , PHP.
      Ich nehme eigentlich immer BinaryWriter und BinaryReader für so Zeug. Ist meiner Meinung nach einfach viel praktischer und auch sauberer zu verwenden, da man das ganze angekommene Zeug nicht splitten muss.

      Kann mir jemand erklären, wieso oft StreamWriter und StreamReader verwendet werden?
      BitConverter hab ich noch nie verwendet, aber bereits gesehen, das nächste mal erinnere ich mich auch daran...xD
      Natürlich ist der BinaryWriter/Reader dafür das intelligenteste, aber ich habs bereits benötigt, dass ichs auch Umwandeln musste und nicht direkt senden konnte(War aber nicht im .Net Bereich^^)...


      Kann mir jemand erklären, wieso oft StreamWriter und StreamReader verwendet werden?

      Nein, ich persönlich mache es immer noch gern direkt über den NetworkStream per Read/Write...
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      Also ich hab ma ne Frage:
      Ich wollte, dass man per InputBox im Client die IP des Servers festlegen kann, aber das funzt nicht. Er sagt immer das die IP falsch ist, ist sie aber nicht :cursing: .

      Das ganze wollte ich so angehen:
      -Am Anfang Deklariere ich die Variable mit der IP drinn:
      --

      VB.NET-Quellcode

      1. Private ip As Net.IPAddress = New Net.IPAddress("127.0.0.1")

      -Dann fragt er in einer InputBox nach der IP:
      --

      VB.NET-Quellcode

      1. ip = New Net.IPAddress(InputBox("IP des Servers:"))

      -Und dann verwendet er die IP halt:
      --

      VB.NET-Quellcode

      1. client.Connect(ip, 8000)


      Danke schonmal im vorraus. Schöner Code übrigends. :thumbsup:
      das instanzieren am Anfang ist unnötig...
      für Eingaben vom Benutzer würde ich Net.IpAddress.Parse bzw. TryParse verwenden um Fehler bei der Eingabe zu vermeiden...

      Nun ist noch die Frage, geht es ums lokale Netzwerk?! Wenn es dort nicht geht, dann kannst dir Gedanken machen warum und ob es mit fester Angabe auch nicht geht->IP ist sicherlich nicht die richtige, oder der Server wurde nicht gestartet...

      Übers Internet würde ich lieber gucken wie es mit Portforwarding aussieht...
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      Danke erstmal.
      Ja es geht um ein lokales Netzwerk. Aber das mit dem Fragen nach der IP brauch ich, weil das Server Programm nicht auf einem Rechner bleibt sondern immer den Rechner wechselt, deswegen wollte ich es halt so machen, dass man die IP angibt um sich mit dem bestimmten Server zu verbinden. Bin grad auf der Arbeit und kann das mit Net.IPAdress.Parse nicht testen, was bringt das?
      Aber das mit dem Fragen nach der IP brauch ich

      Ich hab nicht gesagt, dass dus weglassen sollst ;)
      Nur das hier ist ja wohl nicht nötig:
      = New Net.IPAddress("127.0.0.1")

      Weil du anschließend ja sowieso etwas anderes setzt...

      VB.NET-Quellcode

      1. If NOt Net.Ipaddress.TryParse(InputBox("IP des Servers:"),ip) Then
      2. MessageBox.Show("Ungültige IP-Adresse
      3. Retrun'evtl. verlassen
      4. End If

      Das bringt dir Sicherheit, dass die Eingabe gültig ist ;)
      Außerdem hatte ich einmal das Problem, dass ich beim Server die IP 127.0.0.1 zwar angeben konnte, aber dann nur alles auf was auf demselben PC läuft auch Verbinden kann, deshalb solltest du für den Server wenigstens die IP extra auflösen...
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      jo, super arbeit

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

      Wie mach ich es aber, damit ich am Server schon schreiben und kicken kann?
      Also von der Konsole aus. Hab in sache Konsolenprogs keine erfahrung ;(

      mfg

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