Spieleprogrammierung



  • Wie würdest ihr das Protokoll machen.

    Player1Position;Player2Position;BallPositon;Punktestand

    Den String parse ich und zeichne das Spielfeld jedes Mal neu wenn der Server was schickt.



  • Ich denke es sind noch 1-2 Werte mehr zu übertragen. Ansonsten ja, wieso nicht. Vielleicht noch ne Message-Header dran - einfach den String vor dem ersten ";" als Message-Typ interpretieren.



  • Brauch ich hier eigentlich die while(true) Schleife ????
    Beim ersten Mal lesen da wird dem Player mitgeteilt welchen Schläger er hat. Das müsste ja außerhalb der while(true) Schleife kommen.

    TcpClient tcpClient = new TcpClient ();
    
            // Uses the GetStream public method to return the NetworkStream.
            NetworkStream netStream = tcpClient.GetStream ();
    
    		while(true)
    		{
    			if (netStream.CanRead)
    			{
    				// Reads NetworkStream into a byte buffer.
    				byte[] bytes = new byte[tcpClient.ReceiveBufferSize];
    				// Read can return anything from 0 to numBytesToRead. 
    				// This method blocks until at least one byte is read.
    				netStream.Read (bytes, 0, (int)tcpClient.ReceiveBufferSize);
    
    				// Returns the data received from the host to the console.
    				string returndata = Encoding.UTF8.GetString (bytes);
    
    				Console.WriteLine ("This is what the host returned to you: " + returndata);
    
    			}
    			else
    			{
    				Console.WriteLine ("You cannot read data from this stream.");
    				tcpClient.Close ();
    
    				// Closing the tcpClient instance does not close the network stream.
    				netStream.Close ();
    				return;
    			}
    		}
            netStream.Close();
    


  • Obwohl ich mein Server und Client Programm schließe läuft es trotzdem noch im Task Manager. Wie kann das denn sein ?



  • Hi,

    wo platziert man am besten die Methode

    private void receiveMessage(NetworkStream myNetworkStream)
    

    das Senden wird bei mir durch ein Ereignis ausgelöst. Aber wo pack ich das empfangen rein ? Der Client hat ja keinen zusätzlichen Thread oder so.



  • Gib doch einfach auf, damit ersparst du dir, uns und deinem Lehrer das Drama.



  • wo gehört es rein. Bitte. Und wie kann ich Clients über Änderungen informieren.
    Der Server startet für jeden Client einen eigenen Thread um dort auf Nachrichten vom Client zu warten. Wenn da jetzt was kommt, müssen ja die anderen Client Threads darüber informiert werden. Mein Gott wie mach ich das denn. Gibt es da ein Code Beispiel im Internet. Bin grade überfordert.



  • Ich denke der Client sollte einen eigenen Thread zum Empfangen von Nachrichten starten. Da er da ja ständig hören muss ist das wohl die beste Lösung. Was denkt ihr. Sonst würde ja ständig der GUI Thread blockiert.



  • Oh je, deine Threads sind wirklich ein Armutszeugnis.



  • Der Server listened auf neue Clients in einem Thread. Jeder bisherige Client listened ob was neues kommt. Und um alle Clients upzudaten nehm ich am besten auch nen neuen Thread oder.


Anmelden zum Antworten