Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Da cosa dipende il blocco del programma?

    Salve,

    sto cercando di capire perchè la mia applicazione raggiunto un determinato punto non va più avanti nell'esecuzione, è come se entrasse in stand by! Si tratta di un'applicazione client-server!

    La parte del server interessata è questa qui (Main):

    codice:
    								ServerSocket server = null;
    								Socket ss = null;
    									    				
    								try
    								{
    									server = new ServerSocket(5000);
    									System.out.println("Server in ascolto..");
        					
    									while(true)
    									{
    										ss = server.accept();
        										
        									/*Iscrizione dei client*/
    										if(ss != null)
    										{
    											System.out.println("Stabilita connessione con una socket!"); //
    											
    											ObjectInputStream readInfo = new ObjectInputStream(ss.getInputStream());
    											String operazioneDettata = (String) readInfo.readUnshared();
        										ClientThread client = null;
        										
        										if(operazioneDettata.equalsIgnoreCase("Iscrizione"))
        										{
        											System.out.println("Ci sono..."); //	
    												client = new ClientThread(ss, operazioneDettata);
        										}
        										else
        										{
        											InfoUtente user = (InfoUtente)readInfo.readUnshared();
        											client = new ClientThread(ss, operazioneDettata, user, null);
        										}
        										
        										client.start();
    										}
    									}
    								}
    								catch(IOException e)
    								{
    									e.printStackTrace();
    								}
    								catch(ClassNotFoundException e)
    								{
    									e.printStackTrace();
    								}
    Parte della classe ClientThread
    codice:
    import java.util.*;
    import java.net.*;
    import java.io.*;
    
    class ClientThread extends Thread{
    	
    	public ClientThread(Socket s, String opUser) throws IOException
    	{
    		porta=s;
    		fromClient = new ObjectInputStream(porta.getInputStream());
    		toClient = new ObjectOutputStream(porta.getOutputStream());
    		operazioneUtente = opUser;
    	}
    	
    	public ClientThread(Socket s, String opUser, InfoUtente dati, ArrayList<ClientThread> connessi) throws IOException
    	{
    		porta=s;
    		fromClient = new ObjectInputStream(porta.getInputStream());
    		toClient = new ObjectOutputStream(porta.getOutputStream());
    		operazioneUtente = opUser;
    		datiUtente = dati;
    		utentiConnessi = connessi;		
    	}
    	
    	public void updateList(ArrayList<ClientThread> newList)
    	{
    		utentiConnessi = newList;
    	}
    	
    	public InfoUtente getInfoUser()
    	{
    		return datiUtente;
    	}
    	
    
    	public void run()
    	{
    		System.out.println("THREAD AVVIATO"); // QUESTO PUNTO NON VIENE RAGGIUNTO
    		
    		//CORPO...
            }
    Invece la parte del client interessata è la seguente:
    codice:
    public Iscrizione(File datiUtente) //istanza della classe iscrizione
    	{
    		try
    		{
    			System.out.println("CI ARRIVO 1"); //
    			this.datiUtente=datiUtente;
    			connect = new Socket("localhost", 5000);
    			System.out.println("CI ARRIVO 2"); //
    			inviaDati = new ObjectOutputStream(connect.getOutputStream());
    			System.out.println("CI ARRIVO 3"); //
    			//riceviDati = new ObjectInputStream(connect.getInputStream());		
    			
    			inviaDati.writeUnshared("Iscrizione");
    			inviaDati.flush();
    			
    			InputStream in = connect.getInputStream();
    			System.out.println("CI ARRIVO 4"); //
    			riceviDati = new ObjectInputStream(in);
    			System.out.println("CI ARRIVO 5"); // QUESTO PUNTO NON VIENE RAGGIUNTO
    			String risposta = (String)riceviDati.readUnshared();
    
                           //RESTO DEL CORPO
                 }
    Praticamente i punti indicati lato server e lato client non vengono raggiunti! Lì il programma non va più avanti!

    Da cosa può dipendere il problema?
    Dal thread che non viene lanciato? Oppure dell'oggetto objectInuptStream?

  2. #2
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    non son stato a guardare il codice in modo preciso perchè solitamente quando è capitato a me era perchè esaurivo la memoria..
    mi capitava proprio in applicazioni client server..
    prova ad aumentare la memoria all'esecuzione del programma tramite parametri alla VM e vedi se si blocca ancora.. come primo passo..
    se non si blocca significa che qualche oggetto è chiuso male o non è proprio chiuso e ti va a saturare la memoria..
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  3. #3
    Guarda che quel codice viene eseguito all'avvio del programma..

  4. #4
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ah ok non avevo capito io scusa.. :master:
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  5. #5
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    Dunque sembra che il thread del client non venga manco lanciato, se non esegue manco la prima istruzione.

    Potresti provare a cambiare la classe ClientThread da

    codice:
    class ClientThread extends Thread
    a

    codice:
    class ClientThread implements Runnable
    e richiamarla in questo modo

    codice:
     new Thread(new ClientThread(quel che è)).start()

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.