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 |