Torna indietro   Hardware Upgrade Forum > Software > Programmazione

realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x scommette tutto, forse troppo, sulla batteria da 7500 mAh e sulla certificazione ArmorShell per farsi notare nella fascia più economica del mercato: lo abbiamo messo alla prova per capire a chi è rivolto questo smartphone che sacrifica un po' prestazioni, display e fotocamera per offrire l'autonomia migliore possibile a un prezzo decisamente contenuto
Star Wars Zero Company è l'erede di XCOM 2
Star Wars Zero Company è l'erede di XCOM 2
Bit Reactor porta nell’universo di Star Wars una struttura tattica che richiama apertamente XCOM 2, ma la arricchisce con legami tra i personaggi, progressione ruolistica, gestione della base e un sistema di combattimento costruito attorno a tre Punti Azione e alle risorse condivise della squadra
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-09-2006, 16: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, 10: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, 13:18   #3
lauura
Junior Member
 
Iscritto dal: Sep 2006
Messaggi: 16
HELP!!grassie

Ultima modifica di lauura : 14-09-2006 alle 15:31.
lauura è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2006, 02: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 03:43.
TempestaT400 è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2006, 15: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, 18: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, 00: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 00:30.
TempestaT400 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
NetApp Novus, 100 TB al secondo per sfru...
Spotify giù da ore: se non trovi una can...
Sky con Netflix incluso da 16,99€/mese: ...
Anthropic verso la Borsa: 42 miliardi di...
Data repatriation: cos'è e come S...
ProsperoEden: l'emulatore funzionante ch...
La sonda spaziale ESA JUICE ha effettuat...
iPhone, crash a valanga su migliaia di a...
Se mangi queste patatine puoi vincere un...
Opera browser ha una eSIM integrata da 3...
WINDTRE BUSINESS e la Protezione Civile ...
Intel prepara i chip che si illuminano? ...
HUAWEI WATCH D3 arriva in Italia: l'orol...
PS5 Pro, in Giappone si compra per estra...
Recensione Nothing Headphone (1) Pro, de...
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:05.


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