Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Client uns Sever » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Zum Ende der Seite springen Client uns Sever
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
neuling96
unregistriert
Client uns Sever Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich muss für das Spiel Pingpong eine Chatfunktion einbauen, zudem soll es möglich sein, dass es einen Main spieler gibt, der das spiel spielt , während andere Zuschauen .

Sollte man hier für TCP oder UDP verwenden?
25.10.2015 17:59
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Das kommt drauf an. TCP gibt Rückmeldung darüber, ob ein Paket angekommen ist, UDP nicht. Beim Spiel selbst will man wissen, ob alles angekommen ist. Beim Chat und beim Zuschauen kann man sich darüber streiten.

Gruß,

Karlito
25.10.2015 19:06 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Für den Chat würde ich TCP verwenden, da so Übertragungsfehler verhindert werden.
Beim Spiel selbst geht es aber auch darum, möglichst geringe Verzögerungen zu haben. UDP arbeitet ohne Empfangsbestätigung und ist daher für zeitkritische Dinge (z.B. Videostreaming) besser geeignet.

edit: 2 Leute, 2 Antworten, viel Spaß smile

__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 25.10.2015 19:08.

25.10.2015 19:07 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

erster Vorschlag das aber nicht geht

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
mport java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;

import model.Snake;



public class MultithreadedServer {
     static ArrayList<ObjectOutputStream> client = new ArrayList<>();
    private static int port=9004;
    public static void main(String[] args) throws IOException {
    	   ServerSocket server = new ServerSocket(port);
          
           while (true) {

               Socket sock = server.accept();
               
            
               new Thread(new AntwortProzess(sock)).start();
           }
       }
  

    /**
     * Erzeuge einen Server
     * @param port Listen-Port
     */    
    private MultithreadedServer(int port) {
        this.port = port;
    }

    private static void sendMessage(String nachricht) {
        
    	
    }
    

 
    private static class AntwortProzess extends Thread {

        private final Socket socket;

        public AntwortProzess(Socket socket) {
            this.socket = socket;
        }

        @Override
        public void run() {
            //Diese Methode wird vom Thread gerufen, wenn er startet.
            try (Socket socket = this.socket) {
            	
            	
         
            	ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
            	
            	ObjectOutputStream  out = new ObjectOutputStream(socket.getOutputStream());
            	System.out.print("true");
            	client.add(out);
            	
            	while (true){
                	Snake line;
					try {
						line = (Snake) in.readObject();
		               	if(line !=null){
		                       
		               		for (int i=1; i<client.size();i++){
		               		            	
		               		            		try{
		               		            		client.get(i).writeObject(line);
		               		            		//System.out.print(line);
		               		            		client.get(i).flush();
		               		            		}catch (Exception e) {
		               		                 		// TODO Auto-generated catch block
		               		                 		e.printStackTrace();
		               		                 	}
		               		            		
		               		            		
		               		            		}
		               		            		
		               		            	}	
					} catch (ClassNotFoundException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
            		
 
            
            	}
                //Schreibe eine Zeile Text an den Client zurück.
                
            } catch (IOException ex) {
            	System.out.println(ex);

            }
        
    }
    }
}







code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:








import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;


import javafx.application.Platform;
import javafx.scene.control.TextField;

public class ChatClient extends Thread {

   
 //TextField nachricht;

 ObjectInputStream in;
	ObjectOutputStream  out;
 


 
	    
 
 @Override
 public void run() {

	    try (Socket verbindung = new Socket("localhost", 9004)) {
	    	
	   	// this.chat.getButton().setText("w");
	   	 //Öffne einen InputStream
	   in = new ObjectInputStream(verbindung.getInputStream());
	      out = new ObjectOutputStream(verbindung.getOutputStream());
	      System.out.print("true");
	     
	        } catch (Exception e) {
	         		// TODO Auto-generated catch block
	         		e.printStackTrace();
	         	}
	            
	        
	    }

public static void main (String [] args) {
	ChatClient k = new ChatClient ();
k.start();
}

	    
}




Das ist Problem ist dass
System.out.print("true"); im Clienten nicht ausgeführt wird, aber ich verstehe ich nicht wieso
25.10.2015 22:10
Baumstruktur | Brettstruktur
Gehe zu:
Informatiker Board » Themengebiete » Praktische Informatik » Client uns Sever