Newsgroup: it.comp.java
Titolo: Socket

ciao
so che questo può essere un argomento banale per molti, ma non lo è
affatto per me!!!
ho la necessità di implementare un sistema client/server in cui:
client (nella forma java Client host file)
- invia a host il nome del file che intende uploadare
- invia \n
- invia il file in questione
server (nella forma java Server fold)
- riceve il file e lo salva in fold/file
allora, spiego cosa ho fatto io.
nel client:
<code java>
        int a; //variabile ausiliaria
        String nomeMacchina = args[0]; //nome del server
        String nomeFile = args[1]; //nome del file
        File f = new File(nomeFile); //file da uploadare
        byte[] b = nomeFile.getBytes(); //permette di inviare il nome
del file al server
        InetAddress ind = null; //indirizzo server
        BufferedInputStream in = null; //stream ingresso del file
        BufferedOutputStream out = null; //stream uscita
        Socket c = null;
        try {
            //prova a riconoscere il server
            ind = InetAddress.getByName(nomeMacchina);
        } catch (UnknownHostException ex) {
            //qualcosa
        }
        try {
            //prova a connetterti al server
            c = new Socket(ind.getHostAddress(), 5000);
        } catch (UnknownHostException ex) {
            //qualcosa
        } catch (IOException ex) {
            //qualcosa
        }
        try {
            //provo a aprire lo stream di lettura dal file
            in = new BufferedInputStream(new FileInputStream(f));
        } catch (FileNotFoundException ex) {
           //qualcosa
        }
        try {
            //provo a aprire lo stream di scrittura su socket
            out = new BufferedOutputStream(c.getOutputStream());
        } catch (IOException ex) {
            //qualcosa
        }
        try {
            //scrivo il nome del file su socket
            out.write(b);
        } catch (IOException ex) {
            //qualcosa
        }
        try {
            //invio il file
            while((a = in.read()) != -1){
               out.write(a);
            }
        } catch (IOException ex) {
            //qualcosa
        }
        try {
            //chiudo tutto
            in.close();
            out.flush();
            out.close();
            c.close();
        } catch (IOException ex) {
            //qualcosa
        }
<\code>
nel server invece:
<code java>
                String dir = null; //nome cartella
		File f = null; //file
		int a;
		int off = 0;
		String nomefile = null;;
		Socket s = null;
		ServerSocket ss = null;
		try {
			ss = new ServerSocket(5000);
		} catch (IOException e) {
			//gestisci
		}
		FileOutputStream out = null;
		byte[] b = new byte[1024];
		BufferedInputStream in = null; //stream ingresso della socket
		DataInputStream dis = null;
		InetAddress v = null;
		v = InetAddress.getByName("localhost"); //o comunque nome dell'host
		while (true) {
			try {
				s = new Socket(v.getHostAddress(), 5000);
				s = ss.accept();
				in = new BufferedInputStream(s.getInputStream());
				dis=new DataInputStream(new
BufferedInputStream(s.getInputStream()));
			} catch (UnknownHostException e) {
				//gestisci
			} catch (IOException e) {
				//qualcosa }
                        //leggo il nome del file
			while((a =in.read()) != '\n'){
				nomefile = in.toString();
			}
			f = new File(dir + "/" + nomefile);
			out = new FileOutputStream(f);
			int x;
			while ((x=dis.read(b,off,1024)) != -1) {
				out.write(b, off, 1024);
				off += x;
			}
			out.flush();
			out.close();
			in.close();
			s.close();
		}
<\code>
dov'è che sbaglio? non riesco proprio a capirlo!
scusate se ho postato tanto codice, ma mi è sembrato il modo + facile
per cercare di spiegare cosa ho fatto.
grazie mille per la disponibilità

grazie comunque.......
ho risolto.
anarchi...@gmail.com
 ha scritto:


 ciao
