Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    28

    Problema con programma Client/server TCP

    Salve,
    sto implementando con il protocollo TCP un'applicazione client/server per il gioco della battaglia navale tra due giocatori (il campo di battaglia è una matrice 8x8, ogni nave ha dimensione unitaria ed ogni giocatore può collocare fino a quattro navi sul proprio campo di battaglia).
    Ho scritto il seguente codice, che compilato, non ha alcun errore ma dopo aver preparato il campo di battaglia, quando si inseriscono le coordinate delle navi da colpire, il programma non va più avanti e non riesco a capire perchè!

    codice Client:

    codice:
    import java.io.*;
    import java.net.*;
    
    
    
    public class Client {
    
    	public static void main(String[] args) throws IOException {
    	
    		String[][] campoBattaglia= new String[8][8];
    			String input1, input2, input3, input4;
    			
    			System.out.println("Dove vuoi la tua nave? ");
    			
    			Socket clientSocket=new Socket("localhost", 6789);
    			
    			BufferedReader br1= new BufferedReader(new InputStreamReader(System.in));
    			BufferedReader br2= new BufferedReader(new InputStreamReader(System.in));
    			
    			DataOutputStream dos1=new DataOutputStream(clientSocket.getOutputStream());
    			DataOutputStream dos2=new DataOutputStream(clientSocket.getOutputStream());
    			
    			BufferedReader inDalServer1= new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
    			BufferedReader inDalServer2= new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
    			
    			
    			
    			for(int k=1; k<=4; k++){
    				System.out.println("Inserire la coordinata x per la nave n."+ k+"!");
    				input1=br1.readLine();
    				System.out.println("Inserire la coordinata y per la nave n."+ k+"!");
    				input2=br2.readLine();
    				for(int i=0;i<8;i++){
    					for(int j=0;j<8;j++){
    						if((Integer.parseInt(input1)==i)&&(Integer.parseInt(input2)==j)){
    						campoBattaglia[i][j]="x";
    						dos1.writeBytes(input1);
    						dos2.writeBytes(input2);
    						}	
    					}
    				}
    			}
    			
    			
    		System.out.println("Ora cerca di affondare la nave avversaria! Hai quattro possibilità! ");
    			for(int k=1; k<=4; k++){
    				
    				BufferedReader br3= new BufferedReader(new InputStreamReader(System.in));
    				BufferedReader br4= new BufferedReader(new InputStreamReader(System.in));
    				
    				
    				System.out.println("Inserire la coordinata x per la nave n."+ k+"!");
    				
    				input3=br3.readLine();
    				System.out.println("Inserire la coordinata y per la nave n."+ k+"!");
    				
    				input4=br4.readLine();
    				for(int i=0;i<8;i++){
    					for(int j=0;j<8;j++){
    						
    					
    						if((Integer.parseInt(input3)==Integer.parseInt(inDalServer1.readLine()))&&(Integer.parseInt(input4)==Integer.parseInt(inDalServer2.readLine()))){
    						System.out.println("Colpita e affondata!");
    						}
    						else{System.out.println("Ritenta.Ti rimangono ancora "+ (k-1) +"possibilità!");
    						}
    						
    					}
    				}
    			}
    }}

    codice Server:

    codice:
    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    
    
    public class Server {
    	
    	public static void main(String[] args)throws Exception {
    	
    
    		String[][] campoBattaglia= new String[8][8];
    		String input1, input2, input3, input4;
    		
    		ServerSocket welcomeSocket=new ServerSocket(6789);
    		
    		while(true){
    			
    			Socket socket;
    			
    			socket= welcomeSocket.accept();
    			
    		System.out.println("Dove vuoi la tua nave? ");
    		
    		BufferedReader br1= new BufferedReader(new InputStreamReader(System.in));
    		BufferedReader br2= new BufferedReader(new InputStreamReader(System.in));
    		
    		DataOutputStream dos1=new DataOutputStream(socket.getOutputStream());
    		DataOutputStream dos2=new DataOutputStream(socket.getOutputStream());
    		
    		
    		BufferedReader inDalClient1= new BufferedReader(new InputStreamReader(socket.getInputStream()));
    		BufferedReader inDalClient2= new BufferedReader(new InputStreamReader(socket.getInputStream()));
    		
    		for(int k=1; k<=4; k++){
    			System.out.println("Inserire la coordinata x per la nave n."+ k+"!");
    			input1=br1.readLine();
    			
    			System.out.println("Inserire la coordinata y per la nave n."+ k+"!");
    			input2=br2.readLine();
    			
    			for(int i=0;i<8;i++){
    				for(int j=0;j<8;j++){
    					if((Integer.parseInt(input1)==i)&&(Integer.parseInt(input2)==j)){
    					campoBattaglia[i][j]="x";
    					dos1.writeBytes(input1);
    					dos2.writeBytes(input2);
    					}
    				}
    			}
    		}
    		
    	
    		System.out.println("Ora cerca di affondare la nave avversaria! Hai quattro posibilità! ");
    		
    		for(int k=1; k<=4; k++){
    			
    			BufferedReader br3= new BufferedReader(new InputStreamReader(System.in));
    			BufferedReader br4= new BufferedReader(new InputStreamReader(System.in));
    			
    			System.out.println("Inserire la coordinata x per la nave n."+ k+"!");
    			input3=br3.readLine();
    			
    			System.out.println("Inserire la coordinata y per la nave n."+ k+"!");
    			input4=br4.readLine();
    		
    			for(int i=0;i<8;i++){
    				for(int j=0;j<8;j++){
    					
    					if((Integer.parseInt(input3)==Integer.parseInt(inDalClient1.readLine()))&&(Integer.parseInt(input4)==Integer.parseInt(inDalClient2.readLine()))){
    					System.out.println("Colpita e affondata!");
    					}
    					else{System.out.println("Ritenta.Ti rimangono ancora "+ (k-1) +"possibilità!");
    					}
    					
    				}
    			}
    		}
    			
    		
    		socket.close();
    		}
    		
    	}
    
    }

  2. #2
    Fai un po' di Debug e controlla dove si blocca...
    lolide
    Java Programmer

    Informati

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    28
    Il compilatore non mi dà nessun errore...

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,461
    Originariamente inviato da isal
    Il compilatore non mi dà nessun errore...
    Ti è stato chiesto di controllare dove si blocca il programma in esecuzione.

    E' ovvio che il compilatore non ti da errori, altrimenti non riusciresti nemmeno a lanciare il programma e a riscontrare il blocco che hai descritto.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    e sopratutto, il codice d'errore???

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da franksisca
    e sopratutto, il codice d'errore???
    in genere quando si blocca non è detto che hai un codice di errore. A naso penso ci sia un problema legato all'uso degli stream, che si resta in attesa sullo stream e dall'altro lato non si scriva
    RTFM Read That F*** Manual!!!

  7. #7
    Originariamente inviato da valia
    in genere quando si blocca non è detto che hai un codice di errore. A naso penso ci sia un problema legato all'uso degli stream, che si resta in attesa sullo stream e dall'altro lato non si scriva
    si potrebbe essere, ma visto che non l'ha specificato...

    comunque se non dà errore inserisci delle stampe che ti illustrano il "cammino" dell'applicazione e vedi dove si blocca (se non sai usare il debugger del tuo idee)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.