Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa
Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa
La seconda generazione della citycar elettrica di Dacia passa alla piattaforma RGEV small di Renault Group, cresce di 15 cm in lunghezza e 18 cm in larghezza, adotta un motore da 80 CV e una batteria LFP da 27,5 kWh per 250 km WLTP. Prezzi da 17.900 euro, produzione a Novo Mesto in Slovenia.
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX ha portato sul mercato Picco, un e-reader da 3,97 pollici che pesa 58 grammi e si aggancia al retro dello smartphone con un anello magnetico. Lo abbiamo usato con Pixel 11 Pro XL e iPhone 18 Pro per capire se un formato così ridotto regga la prova della lettura quotidiana
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
A Las Vegas AMD ha svelato i dettagli architetturali delle CPU EPYC di sesta generazione, note con il nome in codice Venice. Nuovi core Zen 6 e Zen 6c costruiti a 2 nanometri, fino a 256 core per socket, 16 canali di memoria, interfaccia PCI Express 6.0 e un'intera famiglia di proposte che va da Venice SP7 a Verano. Senza dimenticare la memoria, oggi la voce di costo più pesante in un server: AMD risponde con CXL 3.1 e con la tecnologia software MEXT, che porta la memoria flash dentro la gerarchia della DRAM.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-09-2006, 17:15   #1
lauura
Junior Member
 
Iscritto dal: Sep 2006
Messaggi: 16
[java] trasferimento file server-client

in breve.. devo implementare dei comandi dove mi serve che un file venga copiato da server a client per poi esser letto o modificato da quest' ultimo.
ho provato ad usare sia la classe BufferedInputStream che la classe DataInputStream ma con scarsi risultati nel senso che a volte mi trasferisce il file ma non tutto (quindi se è un immagine non viene visualizzata) oppure mi crea semplicemente un file vuoto.. ho provato in mille modi..

LATO SERVER:
BufferedOutputStream out = new BufferedOutputStream(client.getOutputStream());
FileInputStream in = new FileInputStream(clientFile.getAbsolutePath());
byte buffer[] = new byte[1];
System.out.println( "Invio file in corso..." );
int i;
while((i = in.read(buffer,0,buffer.length)) != -1){
out.write(buffer,0,i);
}
out.flush();
out.close();
System.out.println( "Invio completato." );

LATO CLIENT:

System.out.println("Ricezione file in corso..");
BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
FileOutputStream out = new FileOutputStream(lDir + fileName);
byte buffer[] = new byte[1];
int i;
while ((i = in.read(buffer,0,buffer.length)) != -1){
out.write(buffer,0,i);
}
out.flush();
out.close();
in.close();
System.out.println( "Ricezione completata!" );


se però chiudo il socket dopo aver trasferito il file allora il file viene creato correttamente ma ovviamente mi serve che il socket rimanga aperto...
HELP!!grassie
lauura è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2006, 11:15   #2
lauura
Junior Member
 
Iscritto dal: Sep 2006
Messaggi: 16
Aiuto???
lauura è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2006, 14:18   #3
lauura
Junior Member
 
Iscritto dal: Sep 2006
Messaggi: 16
HELP!!grassie

Ultima modifica di lauura : 14-09-2006 alle 16:31.
lauura è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2006, 03:00   #4
TempestaT400
Member
 
Iscritto dal: Jan 2006
Messaggi: 92
Ma usi le classi DatagramSocket e DatagramPacket???

per le connessioni ho usato le classi Datagram

Lato Client

Codice:
import java.io.*;
import java.net.*;


public class LineClient {
	
	public static void main(String[] args) throws IOException {
		// 	creazione della socket datagram

		DatagramSocket socket = new DatagramSocket();
		System.out.println("LineClient: started");
		System.out.println("Socket: "+ socket);
		// 	creazione e invio del pacchetto di richiesta
		byte[] buf = new byte[256];
		InetAddress addr;
		if (args.length == 0) 
			addr = InetAddress.getByName(null);
		else 
			addr = InetAddress.getByName(args[0]);
		PrintWriter out = new PrintWriter(new FileWriter("ric.txt"), true);
		
		while(true){
			//invio richiesta
			DatagramPacket packet = new DatagramPacket(buf, buf.length, addr, 4444);
			socket.send(packet);
			System.out.println("Request sent to "+ addr);
	
			// 	pulizia del buffer
			for (int j=0; j<256; j++) 
				buf[j]=' ';
			// 		ricezione e stampa della risposta
			packet = new DatagramPacket(buf, buf.length);
			socket.receive(packet);
			// sospensiva solo per i millisecondi indicati, dopodichè solleva una SocketException
			String received = new String(packet.getData());
			if(received.trim().equals("null"))
				break;
			else
				out.println(received.trim());
		}
		System.out.println("LineClient: closing...");
		socket.close();
	}
}
Lato Server

Codice:
import java.io.*;
import java.net.*;
import java.util.*;

public class LineServer {
	public static final int PORT = 4444; // porta al difuori del range 1-1024 !
	public static final String FILE = "file.txt";
	DatagramSocket socket;
	static BufferedReader in = null;
	static boolean moreLines = true;
	
	public LineServer(){
		try {
			// creazione della socket datagram
			socket = new DatagramSocket(PORT);
			System.out.println("Socket: " + socket);
		} catch (SocketException e) {System.err.println("Unable to create the socket");}
		try {
			// associazione di uno stream
			//	di input al file da cui estrarre le linee 
			in = new BufferedReader(new FileReader(FILE));
			System.out.println("File "+FILE+" opened");
		} catch (FileNotFoundException e)
		{
			System.err.println("Could not open");
		}
	}

	public static void main(String[] args) throws IOException {
		System.out.println("LineServer: started");
		LineServer server=new LineServer();
		while (moreLines) {
			try {
				byte[] buf = new byte[256];
				// ricezione della richiesta 
				DatagramPacket packet = new DatagramPacket(buf, buf.length);
				server.socket.receive(packet);
				// 	preparazione della linea da inviare 
				String dString = null;
				if (in == null) 
					dString = new Date().toString();
				else 
					dString = getNextLine();

				if (dString!=null) {
					buf = dString.getBytes();
					// "impacchettamento" e invio della risposta
					InetAddress address = packet.getAddress();
					int port = packet.getPort();
					packet = new DatagramPacket(buf, buf.length, address, port);
					server.socket.send(packet);
					System.out.println("Sending packet to "+address+", "+port);
				}
				else{
					buf = "null".getBytes();
					// "impacchettamento" e invio della risposta
					InetAddress address = packet.getAddress();
					int port = packet.getPort();
					packet = new DatagramPacket(buf, buf.length, address, port);
					server.socket.send(packet);
				}
			} catch (IOException e) {
				e.printStackTrace();
				moreLines = false;
			}
		}
	
		System.out.println("No more lines. Goodbye.");
		System.out.println("LineServer: closing...");
		server.socket.close();
	}

	static String getNextLine() {
		String returnValue = null;
		try {
			if ((returnValue = in.readLine()) == null) {
				in.close();
				moreLines = false;
				returnValue = null;
				//returnValue	= "No more lines. Goodbye.";
			}
		} catch (IOException e) {
			returnValue = "IOException occurred.";
		}
		return returnValue;
	}
}

Ultima modifica di TempestaT400 : 18-09-2006 alle 04:43.
TempestaT400 è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2006, 16:40   #5
lauura
Junior Member
 
Iscritto dal: Sep 2006
Messaggi: 16
mi dispiace ma ho bisogno di un trsferimento tcp e non udp..
ho provato ad utilizzare le classi datainputstream e dataoutputstream che tutto sommato il trasferimento me lo fa l unico grosso problema e' che mi chiude la connessione dopo il trasferimento cosa che assolutamente non mi deve fare..
SERVER
DataOutputStream out = new DataOutputStream(client.getOutputStream());
DataInputStream in = new DataInputStream(new FileInputStream(clientFile.getAbsolutePath()));
byte buffer[] = new byte[1024];
System.out.println( "Invio file in corso..." );
int i;
while((i = in.read(buffer,0,buffer.length)) != -1){
System.out.println("ci sono");
out.write(buffer,0,i);
out.flush();
}
out.flush();
out.close();
in.close();
System.out.println( "Invio completato." );
addToLogFileList("Invio file '"+clientFile.getName()+"' in lettura effettuato.");

CLIENT
System.out.println("Ricezione file in corso..");
DataInputStream in = new DataInputStream(socket.getInputStream());
DataOutputStream out = new DataOutputStream(new FileOutputStream(lDir + fileName));
byte buffer[] = new byte[1024];
int i;
while ((i = in.read(buffer,0,buffer.length)) != -1){
System.out.println("ci sono");
out.write(buffer,0,i);
out.flush();
}
out.flush();
out.close();
in.close();
System.out.println( "Ricezione completata!" );
lauura è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2006, 19:35   #6
TempestaT400
Member
 
Iscritto dal: Jan 2006
Messaggi: 92
Appena ho un pò di tempo trasformo questa classe da UDP a TCP, anche se non è un lavoro poi così complicato!!!
__________________
L'unico computer sicuro è un computer spento!!!
TempestaT400 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2006, 01:21   #7
TempestaT400
Member
 
Iscritto dal: Jan 2006
Messaggi: 92
Ho appena postato il codice modificato per le connessioni TCP in questo post.!.

http://www.hwupgrade.it/forum/showth...8#post13881078

Cmq, per far si che la connessione non venga chiusa alla fine dell'invio del file basta solamente far gestire ad una classe Thread separata l'invio del file, mentre la classe server principale ritorna nel loop di attesa!!!

esempio...

Codice:
public class MultiServer {
	public static void main(String [] args)throws IOException{
		ServerSocket server = new ServerSocket(1050);
		System.out.println("MultiServer: started");
		
		try{
			while(true){
				Socket clientSocket = server.accept();
				System.out.println("Connection Accepted: "+clientSocket);
				try{
					new ServerThread(clientSocket);
				}catch(IOException ioe){
					clientSocket.close();
				}
			}
		}catch(IOException ioe){
			System.err.println("Accept failed!");
			System.exit(1);
		}
		System.out.println("MultiServer: closing...");
		server.close();
	}
}
più chiaro di così, non so cosa fare!!!!
__________________
L'unico computer sicuro è un computer spento!!!

Ultima modifica di TempestaT400 : 19-09-2006 alle 01:30.
TempestaT400 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa Nuova Dacia Spring, del modello precedente resta...
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone BOOX Picco: l'ebook reader minuscolo è un...
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria AMD EPYC Venice: dentro Zen 6, i SoC a 256 core ...
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro HONOR Pad X9 Max recensione, schermo ultra large...
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Meta multata per 805 milioni di euro dal...
Jensen Huang avrebbe nascosto ai vertici...
Le prime cuffie over-ear di Vivo arrivan...
GPU, CPU e fotoni: il piano di AMD per p...
La soluzione di Google per i nuovi occhi...
Il futuro di XBOX passa per l'intelligen...
Amazon, le 13 offerte da non perdere ogg...
Svendita TV su MediaWorld: OLED LG e Sam...
AMD si ricorda dei gamer, ma il messaggi...
Fate in fretta: su Mediaworld c'è...
Ho usato ArtCraft per trasformare un mio...
SSD e hard disk su AliExpress: 4TB a sol...
Due Mac agli antipodi in forte sconto su...
Quick Spectral Super Resolution (QSSR): ...
AMD Ryzen, prezzi interessanti su AliExp...
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: 20:47.


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