Visualizzazione dei risultati da 1 a 5 su 5

Visualizzazione discussione

  1. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Quote Originariamente inviata da andbin Visualizza il messaggio
    bisognerebbe vedere meglio il contesto.
    Eccolo :

    codice:
    package appello19Febbraio2014; // OK
    
    
    import java.util.*;
    import java.io.*;
    import java.net.*;
    import java.security.*;
    import java.security.spec.*;
    import javax.crypto.*;
    
    
    
    
    class Host {
        
        private SendKey sk;
        private KeyPair kp;
        private Cipher cipher , decipher;
        private int UDPPort;
        
        public Host(int skPort){
            
            try{
            sk = new SendKey(skPort);
            sk.start();
            DatagramSocket dSocket = new DatagramSocket(UDPPort);
            
            }catch(Exception err){
                err.printStackTrace();
            }
            
        }//COSTRUTTORE
        
        class SendKey extends Thread{
            
            private ServerSocket sSocket;
            private int skPort;
            
            public SendKey(int skPort){
                
            this.skPort = skPort;
            
            try{
                sSocket = new ServerSocket(skPort);
                
            }catch(Exception err){
                err.printStackTrace();
             }
            
            }
            
            public void run(){
                
                try{
                    while(true){
                        
                        Socket s = sSocket.accept();
                        InputStream in = s.getInputStream();
                        in.read();
                        
                        KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
                        kpg.initialize(1000);
                        kp = kpg.generateKeyPair();
                        
                        decipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
                        decipher.init(Cipher.DECRYPT_MODE , kp.getPrivate());
                        cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
                        cipher.init(Cipher.ENCRYPT_MODE , kp.getPrivate());
                        
                        OutputStream out = s.getOutputStream();
                        out.write(kp.getPublic().getEncoded());
                    }
                }catch(Exception err){
                    err.printStackTrace();
                }
            }
        }//THREAD SEND KEY
        
        class gestisciRichieste extends Thread {
            
            private Socket s;
            private DatagramSocket dSocket;
            private int UDPPort;
            
            public gestisciRichieste(Socket s , int UDPPort){
                
                try{
                this.s = s;
                this.UDPPort = UDPPort;
                DatagramSocket dSocket = new DatagramSocket(UDPPort);
                this.start();
                
                }catch(Exception err){
                    err.printStackTrace();
                }
                
            }
            
            public void run(){
                
                try{
                    while(true){
                        
                        InputStream in = s.getInputStream();
                        byte [] richiestaByte = new byte [1000];
                        int numByte = in.read(richiestaByte);
                        richiestaByte = Arrays.copyOf(richiestaByte , numByte);
                        
                        String richiesta = new String(decipher.doFinal(richiestaByte));
                        int pos = richiesta.indexOf("@");
                        String ip = richiesta.substring(0,pos);
                        String messaggio = richiesta.substring(pos+1);
                        
                        in.close();
                        
                        byte [] buf = cipher.doFinal(messaggio.getBytes());
                        InetAddress clientAdd = InetAddress.getByName(ip);
                        DatagramPacket packet = new DatagramPacket(buf , buf.length , clientAdd , UDPPort);
                        dSocket.send(packet);
                    }
                }catch(Exception err){
                    err.printStackTrace();
                }
            }
        }// THREAD GESTISCI RICHIESTE
        
        public static void main (String [] args){
            
            try{
                int skPort = 6900;
                ServerSocket servSocket = new ServerSocket(6800);
                int UDPPort = 7700;
                
                Host host = new Host(skPort);
                
                while(true){
                    
                    Socket s = servSocket.accept();
                    gestisciRichieste gr = host.new gestisciRichieste(s , UDPPort);
                    
                }
            }catch(Exception err){
                err.printStackTrace();
            }
            
        }//MAIN
    
    
    }//HOST
    L'invio del pacchetto è nella classe gestisciRichieste
    Ultima modifica di Markus85; 17-06-2014 a 22:23

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 © 2026 vBulletin Solutions, Inc. All rights reserved.