Client uns Sever

Neue Frage »

Auf diesen Beitrag antworten »
neuling96 Client uns Sever

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?
 
Auf diesen Beitrag antworten »
Karlito

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
Auf diesen Beitrag antworten »
eulerscheZahl

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
Auf diesen Beitrag antworten »
neuling96

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
 
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »