lezione6.scommesse.server
Class BetServer

java.lang.Object
  extended by lezione6.scommesse.server.BetServer

 class BetServer
extends java.lang.Object

Questo è un esempio di un'applicazione che garantisce autenticazione del mittente. Il server genera una coppia di chiavi e comunica la chiave pubblica a chi ne fa richiesta. In seguito ogni comunicazione in uscita sarà cifrata con la chiave privata. I client, che decifrano i messaggi con la chiave pubblica sapranno che può essere stato solo questo server ad inviare i dati, perché è l'unica entità a disposizione della chiave privata originale.

Author:
Raffaele Giordanelli

Nested Class Summary
(package private)  class BetServer.BetAccepter
          Thread per gestire le scommesse ricevute in tempo utile
(package private)  class BetServer.BetDenier
          Thread per gestire le scommesse ricevute fuori tempo massimo
private  class BetServer.SendKey
          Thread per la gestione dell'invio della chiave pubblica
 
Field Summary
private  BetServer.BetAccepter accepter
           
private  javax.crypto.Cipher cipher
           
private  javax.crypto.Cipher decipher
           
private  BetServer.BetDenier denier
           
(package private)  java.security.KeyPair kp
           
private  java.util.Calendar limite
           
private  int port
           
private  java.util.HashMap<java.lang.Integer,Scommessa> scommesse
           
private  BetServer.SendKey sendKey
           
 
Constructor Summary
BetServer(int port, int getKeyPort, java.util.Calendar deadline)
           
 
Method Summary
 void attendiChiusuraScommesse()
          Attende fino al termine del thread BetAccepter.
 void chiusuraScommesse()
          Avvia il thread BetDenier che rifiuterà le scommesse in arrivo.
 void comunicaVincitori(java.util.LinkedList<Scommessa> vincitori, java.net.InetAddress ind, int port)
          Invia a tutti i client in multicast l'elenco dei vincitori
 java.util.LinkedList<Scommessa> controllaScommesse(int cavalloVincente)
           
static void main(java.lang.String[] args)
           
 void resetServer()
          Fa terminare anche il thread BetDenier.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

scommesse

private java.util.HashMap<java.lang.Integer,Scommessa> scommesse

limite

private java.util.Calendar limite

accepter

private BetServer.BetAccepter accepter

denier

private BetServer.BetDenier denier

port

private int port

sendKey

private BetServer.SendKey sendKey

decipher

private javax.crypto.Cipher decipher

cipher

private javax.crypto.Cipher cipher

kp

java.security.KeyPair kp
Constructor Detail

BetServer

public BetServer(int port,
                 int getKeyPort,
                 java.util.Calendar deadline)
Method Detail

attendiChiusuraScommesse

public void attendiChiusuraScommesse()
Attende fino al termine del thread BetAccepter. Quando il metodo termina, le scommesse sono automaticamente chiuse.


chiusuraScommesse

public void chiusuraScommesse()
Avvia il thread BetDenier che rifiuterà le scommesse in arrivo.


resetServer

public void resetServer()
Fa terminare anche il thread BetDenier.


controllaScommesse

public java.util.LinkedList<Scommessa> controllaScommesse(int cavalloVincente)
Returns:
la lista delle scommesse vincenti, ovvero con puntata sul cavallo passato come parametro

comunicaVincitori

public void comunicaVincitori(java.util.LinkedList<Scommessa> vincitori,
                              java.net.InetAddress ind,
                              int port)
Invia a tutti i client in multicast l'elenco dei vincitori


main

public static void main(java.lang.String[] args)