Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Aiuto Semaforo con client e server;
Forum - Java - Aiuto Semaforo con client e server;

Avatar
Rosario88 (Normal User)
Newbie


Messaggi: 1
Iscritto: 04/05/2017

Segnala al moderatore
Postato alle 12:02
Giovedì, 04/05/2017
Buongiorno a tutti .
Devo realizzare il seguente programma: Si realizzi un software capace di gestire i semafori ad un incrocio stradale. Il software deve prevedere una stazione di controllo che faccia da server ed I vari semafori (clients).

I semafori si devono registrare presso il server, successivamente si potraÂÂÂÂ’ impostare sui semafori la modalitaÂÂÂÂ’ semaforo attivo, spento, arancio lampeggiante dal server dove eÂÂÂÂ’ presente un diagramma sinottico, nello stile in figura) mentre nel client ci dovraÂÂÂÂ’ essere solo un semaforo acceso, spento o lampeggiante.  I semafori dovranno essere raggruppati per incrocio. I semafori di ciascun incrodio dovranno avere uno stato consistente (da un lato verde dallÂÂÂÂ’altro rosso, tutti in lampeggiante, etc.). Si utilizzi il protocollo SIP per la gestione della segnalazione o eventualmente si implementi un protocollo di livello applicativo text-based.

Si testi il programma con almeno due pc (o con una macchina virtuale).
Domanda numero 1: cosa intende per Si utilizzi il protocollo SIP per la gestione della segnalazione o eventualmente si implementi un protocollo di livello applicativo text-based.

Domanda numero2: Perché mi da errore nel ciclo for del server???

n.b.:SemaforoServer1 è un altra classe.
Dove c'è traffic , ovviamente ci sono le parentesi quadra con dentro i, ma qui non si vede.

L'errore che mi da è Exception in thread "Thread-0" java.lang.NullPointerException
    at Server.Connesso.Connessione(Comecazzosifa.java:87)


package Server;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

import Enumerazioni.Enumerazione;

public class Comesifa {

public static void main(String args[])
{
    try
    {
        ServerSocket server = new ServerSocket(6116);

        // ciclo infinito, in attesa di connessioni
        while(true)
        {
            // chiamata bloccante, in attesa di una nuova connessione
            Socket client = server.accept();

            // la nuova richiesta viene gestita da un thread indipendente, si ripete il ciclo
            Connesso nuovaConnessione = new Connesso(client);
        }
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}
}
class Connesso extends Thread
{  
    SemaforoServer1 traffic[];
   Socket client;
   ObjectInputStream in;
   ObjectOutputStream out;



   public ObjectInputStream getIn() {
       return in;
   }


   public void setIn(ObjectInputStream in) {
       this.in = in;
   }


   public ObjectOutputStream getOut() {
       return out;
   }


   public void setOut(ObjectOutputStream out) {
       this.out = out;
   }  
    public Connesso(Socket client)
    {
        this.client = client;

        // invoca automaticamente il metodo run()
        this.start();
    }

    public void run()
    {
        Connessione(client);
    }
@SuppressWarnings("unused")
public void Connessione(Socket client){        
        try
        {
            // inizializza i buffer in entrata e uscita
            ObjectInputStream in = new ObjectInputStream(client.getInputStream());
            ObjectOutputStream out = new ObjectOutputStream(client.getOutputStream());

String messaggio;
            System.out.println("Sto servendo il client che ha indirizzo "+client.getInetAddress());
            messaggio =(String) in.readObject();
            for(int i=0; i<4; i++){
         if(messaggio.equals(traffic));
                traffic.setConnect(true);
                System.out.println(traffic.getclientName());
                traffic.setSocketclient(client);
                traffic.setIn(in);
                traffic.setOut(out);
                
                traffic.getjSemaforo().setVisible(true);
                break;
            
                
            }
        
          
        
            try {
                in.close();
                out.close();
                out.flush();
                 client.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } catch(IOException e){
            
} catch (ClassNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }
}
//
;
Client:

package Client;
import java.io.IOException;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.*;

import javax.swing.JLabel;

import Enumerazioni.Icone;
import Img.*;
import Server.GestioneConnessioneServer;
import Enumerazioni.Enumerazione;
import Enumerazioni.Enumerazione.Stato;
public class ClientSemafori extends Thread {
    String NomeClient;
    int port=6116;
    static String IP;
    static Socket ClientSocket= null;
    ObjectInputStream in= null;
    ObjectOutputStream out= null;
    boolean connesso= false;
    Enumerazione.Stato Casi;
    Icone icone;
    JLabel lblSemaforo;
    

public Enumerazione.Stato getCasi() {
        return Casi;
    }


    public void setCasi(Enumerazione.Stato casi) {
        Casi = casi;
    }


public String getNomeClient() {
        return NomeClient;
    }


    public void setNomeClient(String nomeClient) {
        NomeClient = nomeClient;
    }


    public int getPort() {
        return port;
    }


    public void setPort(int port) {
        this.port = port;
    }


    public static String getIP() {
        return IP;
    }


    public static void setIP(String iP) {
        IP = iP;
    }


    public Socket getClientSocket() {
        return ClientSocket;
    }


    public void setClientSocket(Socket clientSocket) {
        ClientSocket = clientSocket;
    }


    public ObjectInputStream getIn() {
        return in;
    }


    public void setIn(ObjectInputStream in) {
        this.in = in;
    }


    public ObjectOutputStream getOut() {
        return out;
    }


    public void setOut(ObjectOutputStream out) {
        this.out = out;
    }


    public boolean isConnesso() {
        return connesso;
    }


    public void setConnesso(boolean connesso) {
        this.connesso = connesso;
    }

    public static void main(String argv[]) throws Exception
    {
        ClientSemafori c = new ClientSemafori();
        Socket socket = c.Connetti();
        socket.close();
        
    }

public Socket Connetti() throws IOException{
    System.out.println("Stampa" + getIP() + getNomeClient());
    try {
        Socket ClientSocket  =new Socket("localhost",port);
        ObjectOutputStream out= new ObjectOutputStream(ClientSocket.getOutputStream());
        out.flush();
        ObjectInputStream in =new ObjectInputStream(ClientSocket.getInputStream());
        setConnesso(true);
        
        String nome = getNomeClient();
        System.out.println("Invio nome: " + nome);
        out.writeObject(nome);
        out.flush();
        
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
    return ClientSocket;
}
    public void Message(String message){
  
        if( message == "TRUE")
        {
            setCasi(Enumerazione.Stato.SPENTO);
            System.out.println("Il semaforo " + getNomeClient()+ "� connesso");
        }
        else {
            System.out.println("il semaforo" + getNomeClient()+ "non � connesso");
        }
    }
    public void run(){
        String msg;
        try {
            Connetti();
            while (isConnesso()){
                msg= (String) in.readObject();
                System.out.println("Messaggio ricevuto dal server " + msg);
                Enumerazione.Stato message= Enumerazione.Stato.valueOf(msg);
                switch(message){
                case VERDE:
                case ROSSO:
                case GIALLO:
                case SPENTO:
                lblSemaforo.setIcon(Icone.getIcona(message));
                    
                }
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

sul client non ci sono problemi

Ultima modifica effettuata da Rosario88 il 04/05/2017 alle 12:12
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 19:07
Domenica, 07/05/2017
Testo quotato


Domanda numero 1: cosa intende per Si utilizzi il protocollo SIP per la gestione della segnalazione o eventualmente si implementi un protocollo di livello applicativo text-based.

Domanda numero2: Perché mi da errore nel ciclo for del server???



1) Non ho idea di cosa si intenda per protocollo SIP, dovresti chiedere all'autore della traccia. Un protocollo e' semplicemente un insieme di regole per comunicare. Quindi devi inventarti una lista di regole per far comunicare client e server (ad esempio, avere un messaggio per attivare il semaforo, uno per spegnerlo, etc.)

2)     SemaforoServer1 traffic[]; non e' inizializzato da nessuna parte.


Il mio blog: https://piero.dev
PM Quote