Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-09-2002, 08:54   #1
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
crittografia e timer in java

1) se ho un loop del tipo

while (true)
{

prima parte : fa qualcosa

seconda parte : fa altro


}

cioà suddiviso logicamente in due sottoparti, come posso fare a impostare un timer che le attivi nell'ordine giusto e ciclicamente?
che classi devo importare e che metodi devo usare?



2) ho due programmi che si scambiano messaggi ( stringhe)
devo fare in modo che la trasmissione sia crittata...l'algoritmo non ha molta importanza....ne basta uno semplice...
anche qui come devo fare? che classi importare? che metodi usare?
ciao!!
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 09:35   #2
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
vi prego una rispostina ...in particolare sulla crittografia..sono nel panico!!
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 10:15   #3
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da loveforSCSI
[b]vi prego una rispostina ...in particolare sulla crittografia..sono nel panico!!

sulla crittografia ti ho gia' risposto, puoi fare in modo che la comunicazione sui tuoi socket sia crittata con ssl. se usi un jdk inferiore all'1.4 scaricati le estensioni JSSE, se usi l'1.4 sono gia' comprese.
se hai problemi nell uso delle librerie posta pure, non le ho mai usate ma non dovrebbero essere complicate
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 10:24   #4
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
ciao..spero che le vacanze siano andate bene....
dunque io ho scaricato java criptography extensions..
sono in laboratorio e uso eclipse....la jce contiene jar e non class quindi ho problemi di importazione....
che sto cercando di risolvere..
piuttosto..per il discorso del timer...sai dirmi qualcosa?
ho cercato su due libri di java ma non ho trovato niente...
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 12:44   #5
recoil
Senior Member
 
L'Avatar di recoil
 
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
cerca con google java.util.Timer
io non lo ricordo molto bene, cmq mi sembra che serva per eseguire determinati task ad un certo tempo o a intervalli di tempo.
recoil è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 13:16   #6
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
alora, ho scaricato il java criptography extensions...e dovrebbe esserci un package chiamato javax.crypto ma NON esiste !!!!!!!!!
mi pare di aver capito che lì ci sono le 2 cose in croce che mi servono.....basterebbero un metodo che critta e uno che decritta con una lgoritmo semplice semplice....magari con una sola chiave pure fissa!!
ma non riesco a importare sto javax.crypto !! quindi non posso nemmeno fare esperimenti!
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 14:08   #7
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
infatti non hai bisogno di jce ma di jsse! :o


http://java.sun.com/products/jsse/index-103.html

il package e' javax.net.ssl

ciao


P.S. per il timer non ho capito di che hai bisogno :o
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 14:52   #8
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
ciao king...meno male che ci sei tu.......
dunque per il timer...una cosa apparentemente semplice...
si tratterebbe di avere un metodino che aspetta per x millisecondi che qualcuno scriva qualcosa con la tastiera, dopodichè attiva una routine che prende in input i messaggi che gli altri client hanno scritto e poi ritorna nuovamente a controllare se qualcuno ha scritto qualcosa con la tastiera...e così via...
ciao!!!
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 15:09   #9
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
ti posto le nuove versioni del client e del server...
mi rimangono due cose da fare: criptare le comunicazioni e gestire meglio il printtoeveryone (ora non c'è più...ho usato un altro sistema)...x quest'ultima cosa ho bisogno del timer...
comunque x criptare avrei bisogno di fare in modo che ogni volta che accedo agli oggetti in e out lo faccio in maniera criptata ) x esempio ssl)
ciao!!

import corejava.*;
import java.io.*;
import java.net.*;
import java.util.*;



class Servizio extends Thread

{
private Socket socket;
private BufferedReader in;
private PrintWriter out;

public Servizio(Socket s) throws IOException
{
socket = s;
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));// flush automatico:
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
start();
}

public void run()
{

try
{
String id = in.readLine();
System.out.println("avviata autenticazione per "+id+".....");
boolean okid = false ;
int puntatore=0;

for ( int x=0 ; x < Server.clients.size() ; x++)

{

String nome = (String)Server.clients.get(x);
if ( nome.equals(id) )

{
puntatore = x;
okid = true;//in Java il confronto di stringhe fatto con == è sbagliato!!!!!
}

}

boolean okpass = false;
String reqpass = "inserire la password:";
out.println(reqpass);
String pass = in.readLine();
String accettato = "autenticato.";
String rifiutato = "non autenticato";

String psw = (String)Server.password.get(puntatore);

if(psw.equals(pass))

{

okpass = true;

}

boolean OK = okid & okpass;
if (OK == true)

{
System.out.println(id + " si e' autenticato.");

//adesso visualizziamo la variabile puntatore
System.out.println("l'indice del client che si è autenticato è :"+puntatore);


//adesso inseriamo nel vettore " autenticati" l'identificativo dell'
//utente che si è appena autenticato

Server.Inserimento(id,puntatore);

//vediamo il vettore autenticati

System.out.println("il vettore autenticati adesso è:");
Server.MostraAutenticati();

out.println (accettato);

while (true)

{
String messaggio = in.readLine();
Server.messaggi.set(puntatore,messaggio); //memorizziamo il messaggio nella posizione giusta
if (messaggio.equals("fine")) break; //esce dal loop
System.out.println(id+":" + messaggio);

for(int counter = 0; counter< Server.messaggi.size(); counter++)

{
String name = (String)Server.autenticati.get(counter);
String mex = (String)Server.messaggi.get(counter);
if ((name != "null") & (mex !="null"))
{
String conferma = name+":"+mex;
out.println(conferma);
}
}
String eot = "eot";
out.println(eot);

}

System.out.println(id+" ci ha lasciato...");
Server.Rimozione(id,puntatore);
System.out.println("il vettore autenticati adesso è:");
Server.MostraAutenticati();


}
else

{

out.println(rifiutato);
System.out.println("autenticazione fallita per " + id + ".");
socket.close();

}
}
catch (IOException e){}
finally

{

try

{
socket.close();
}

catch(IOException e) {}
}
}
}

public class Server

{
static final int porta = 8080;

public static Vector file = new Vector();//recuperiamo dal file ogni riga e la inseriamo in questo vettore
public static Vector clients = new Vector(); //questo vettore ospita i nomi utente dei clients
public static Vector password = new Vector(); //questo vettore ospita le password di ciascun utente
public static Vector autenticati = new Vector();// in questo vettore vengono inseriti ii nomi dei client che via via si autenticano
public static Vector messaggi = new Vector(); //in questo vettore vengono memorizzati i
//messaggi che i clients, via via che si autenticano, scrivono..tali messaggi vengono
//re-diretti verso tutti gli altri clients...per semplicità le dimensioni del vettore
// messaggi sono le stesse del vettore clients

public static void main(String[] args) throws IOException

{
ServerSocket s = new ServerSocket(porta);
String local = System.getProperty("user.dir");
System.out.println ( "la directory locale è:" + local);
int maxclients = Console.readInt("quanti client possono collegarsi contemporaneamente al server ?");
BufferedReader in = new BufferedReader(new FileReader("password.txt"));//il file di password contiene alternati su righe successive nomi utente e password
String riga;
int i = 0;

try
{

do

{
if ((riga = in.readLine()) != null)

{
String k= new String(riga);
file.add(i,k);
//System.out.println ( " ho letto la riga :" + (i+1) + "del file");
//System.out.println ( " la stringa letta è:" + riga);
i++;
}
}
while (riga != null);
in.close();

// for ( int z=0 ; z<vett.size() ; z++)
// {
// String stringa = (String)vett.get(z);
// System.out.println("la riga"+(z+1) +" letta e'"+stringa);
// }

}

catch(IOException e)
{
System.out.println("non posso leggere dal file");
}

System.out. println("il file e':");
for (int m=0 ; m<file.size() ; m++)

{String g = (String)file.get(m);
System.out.println(g);
}



System.out.println(" adesso inizializzo il vettore dei nomi utente e delle password");
int punt1=0;
int punt2=0;
for (int p=0 ; p<file.size() ; p=p+2)

{
String temp1 = (String)file.get(p);
clients.add(punt1,temp1);
punt1 = punt1 +1;
}//ho inizializzato il vettore client

for (int q=1 ; q<file.size() ; q=q+2)

{
String temp2 = (String)file.get(q);
password.add(punt2,temp2);
punt2 = punt2+1;
}//ho inzializzato anche il vettore delle password
//ora abbiamo due vettori che contengono nomi utente e password
//...essendo disponibile il vettore clients, possiamo impostare la dimensione
// del vettore messaggi e del vettore autenticati
//..in questo modo agiremo su di esso tramite il metodo set


messaggi.setSize(clients.size()); //
autenticati.setSize(clients.size()); //
//a questo punto inizializziamo il vettore messaggi con la
//stringa vuota

String empty = "null";

for ( int b = 0 ; b < messaggi.size() ; b++)

{
messaggi.setElementAt(empty,b);
}
//e inzializziamo con la stessa stringa vuota anche il vettore autenticati

for ( int w = 0 ; w < autenticati.size() ; w++)

{
autenticati.setElementAt(empty,w);
}

System.out.println ("i nomi utente sono:");

for ( int z=0 ; z<clients.size(); z++)
{
String a = (String)clients.get(z);
System.out.println(a);
}

System.out.println ("le password sono ( nell'ordine):");

for ( int j=0 ; j<password.size(); j++)
{
String b = (String)password.get(j);
System.out.println(b);
}


System.out.println("Server avviato in attesa della connessione dei clients....");

try {

while(true)
{
Socket socket = s.accept();
try
{
new Servizio(socket);
}
catch(IOException e)
{
socket.close();
}
}
}
finally
{
s.close();
}
}

public static void Inserimento (String nome, int punt)

{
autenticati.set(punt,nome);
}

public static void Rimozione ( String nome, int punt)

{

autenticati.set(punt,"null");

}

public static void MostraAutenticati()
{
for (int contatore = 0 ; contatore < autenticati.size() ; contatore++)
{
String c = (String)autenticati.get(contatore);
if ( c != "null") System.out.println(c);

}
}
}
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 15:21   #10
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da loveforSCSI
[b]ciao king...meno male che ci sei tu.......
dunque per il timer...una cosa apparentemente semplice...
si tratterebbe di avere un metodino che aspetta per x millisecondi che qualcuno scriva qualcosa con la tastiera, dopodichè attiva una routine che prende in input i messaggi che gli altri client hanno scritto e poi ritorna nuovamente a controllare se qualcuno ha scritto qualcosa con la tastiera...e così via...
ciao!!!

sono in ufficio e non posso leggere tutto il codice che hai postato

io farei due thread diversi, uno che gestisce l'input e uno che si occupa di mandare tutti i messaggi ai client. Facendo come dici tu se uno scrive mentre e' attiva la spedizione dei messaggi il programma non "sentirebbe" la pressione dei tasti.

per i socket con ssl scaricati il package che ti ho detto, infilato in classpath e fai qualche prova che non sembra complicato :o

cos'e' sta roba?
import corejava.*;
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 15:27   #11
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
corejava è un package che contiene una classe Console per fare input da tastiera..ho iniziato con quella e me la sono tenuta

mi spiegheresti in due parole come funziona ssl?....
credo che sia così:

mi invento una chiave tipo
string chiave = " abcdefgddhdhhd"

se voglio crittare una stringa ci sarà il metodo

String stingaCrittata=crittaSSL(stringa in chiaro,chiave)

per decrittare

String stringaInChiaro = decritta(stringaCrittata,chiave)

è così???

nella apidoc di jsse parlano di cose parecchio più incasinate...
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 16:27   #12
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
sto dando un'occhiata al package (mai usato).

per creare un Socket:

Codice:
SocketFactory sf = SSLSocketFactory.getDefault(); 
Socket s = sf.createSocket("Server", 443);
//443 e' la porta standard ssl

per creare un ServerSocket:

Codice:
ServerSocketFactory ssf = SSLServerSocketFactory.getDefault(); 
ServerSocket ss = ssf.createServerSocket(443);

fatti questi cambiamenti il tuo codice dovrebbe rimanere invariato
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 16:36   #13
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
grazie....adesso provo...sto usando un ide un po' rompicoglioni (eclipse).....
però la chiave non bisogna specificarla?
ciao!!
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 16:41   #14
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da loveforSCSI
[b]grazie....adesso provo...sto usando un ide un po' rompicoglioni (eclipse).....
però la chiave non bisogna specificarla?
ciao!!
non conosco eclipse, e' open source?

la chiave non occorre specificarla, pero' penso occorra un certificato, ma devo leggere un attimino la documentazione :o :o

cmq prova cosi', se non funziona fatti sentire
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 16:51   #15
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
si è opensource....è sul server del mio laboratorio...
se vuoi scaricarlo da lì posso lavorarci..
un certificato?
ma cosa è un certificato?
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 18:16   #16
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
bo, io sarò pure rincoglionito ( anzi lo sono sicuramente) però nel jsse che ho scaricato dal link che mi hai dato non ci sono package ma 3 file jar (???)...ora io li ho messi nel class path ma se provo un'importazione di javax.net.ssl mi dice che non esiste il package...
forse le classi sono dentro ai jar...e magari i jar vanno trattati in maniera particolare (è così?)...
guarda per il timer non fa niente....così come è ora un client vede cosa hanno scritto gli altri client solo se lui scrive un messaggio ( oppure preme invio e basta)...lo so che non è proprio come in una chat..ma io mi sono rotto il xxxxx con sto lavoro e se lo beccano così com'è...non posso starci per altro tempo sopra....
quindi gli faccio sta benedetta crittografia e basta!
ciao
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 10-09-2002, 08:46   #17
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
non conosco eclipse ma nella maggior parte dei tool di sviluppo se metti i jar in classpath le classi contenute vengono viste senza problemi dall'ambiente. In ogni modo non scompattare i jar, cerca nel tuo tool l'opzione per aggiungere nuovi package.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 10-09-2002, 10:45   #18
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
ci sono riuscito alla fine a importare questi jar maledetti!
hai ragione sul certificato...fatte le modifiche se avvio il server mi dà questo errore:

No available certificate corresponds to the SSL cipher suites which are enabled.

ma il certificato è un file oppure è una costante che devo crearmi io?
spulcio la apidoc...se sai già la risposta postala plaese
ciao e grazie
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 10-09-2002, 11:35   #19
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
ho dato un occhiata, esiste un tool (keytool) per la generazione "fai da te" di chiavi per l'ssl.

e' spiegato piu'ttosto bene qui:

http://java.sun.com/products/jsse/do...dCustomization


Ciao
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 10-09-2002, 16:22   #20
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
ho quasi risolto il problema del timer ( già che ci sono..)
lma ho bisogno di sapere come fare input da tastiera non bloccante ( corejava...............) infatti ora i client possono ricevere i messaggi degli altri solo se viene premuto un tasto...appunto perchè l'input che fa corejava è bloccante...


in alternativa la lettura dei messaggi la potrebbe fare un altro thread...il problema è che non riesco ad agire sullo stream di input da un altro thread perchè non posso dichiararlo public




loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
Novità dalle analisi dell'asteroi...
La PS6 sarà più potente del previsto: ec...
Sony svela Xperia 10 VII: è il nu...
Amazon Weekend da urlo: iPhone 16 a prez...
Spotify diffida ReVanced: chiesta la rim...
Spazzolini elettrici Oral-B iO in super ...
Samsung Galaxy Watch8 Classic e Watch7 a...
Blue Origin prosegue lo sviluppo di Blue...
Roborock Saros 10 e 10R dominano il merc...
Apple scatenata su Amazon: tutti gli sco...
Canon EOS C50 è la nuova videocam...
ASUS ProArt P16 arriva in Italia: la wor...
Fujifilm presenta l'obiettivo FUJINON GF...
Il grafene ha appena 'infranto' una legg...
Metroid Prime Beyond: arriva un trailer ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:36.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v