PDA

Visualizza la versione completa : [JAVA] -Socket- server in un client


Arthemis
27-05-2007, 11:23
Ciao ragazzi sto facendo un progetto per l'esame di maturitÓ di quest'anno.E' un peer to peer per trasferire dei files e praticamente Ŕ completato apparte il fatto che mi manca la parte piu importante, trasferire i files :berto:
Ho deciso di usare una porta per far comunicare i client con il server che gestisce gli utenti connessi e i files presenti (tramite un database fatto con access) dopodiche quando un client vuole un certo file fa la classica ricerca e il server gli fornisce i risultati di chi ha quel file. L'utente sceglie quale vuole scaricare e il server gli invia l'ip di questa persona in modo che il client puo fare una connessione diretta su un'altra porta con il client che ha il file. Ogni client avrÓ quindi un server implementato per poter gestire le richieste di files da parte di altri client, ma mentre un client effettua una richiesta mi esce questo spiacevole messaggio :incupito: che appare durante il runtime per mezzo del metodo per stampare le eccezioni
printStackTrace() mi sapreste dire qual'Ŕ il problema?


127.0.0.1
/127.0.0.1 requests fileEccezione durante l'invio
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFull y(ObjectInputStream
.java:2228)
at java.io.ObjectInputStream$BlockDataInputStream.rea dShort(ObjectInputS
tream.java:2694)
at java.io.ObjectInputStream.readStreamHeader(ObjectI nputStream.java:761
)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:277)
at client$ClientServerPart.run(client.java:455)
at java.lang.Thread.run(Thread.java:595)


Vi posto anche un po di codice cosi mi sapete dire meglio

class ClientServerPart implements Runnable{
private ObjectInputStream InFlux;
private ObjectOutputStream OutFlux;
FileInputStream InFile;
private Socket sock;

ClientServerPart(Socket socket){
try{
OutFlux=new ObjectOutputStream(socket.getOutputStream());
InFlux=new ObjectInputStream(socket.getInputStream());
sock=socket;
}catch(Exception e){e.printStackTrace();};
}

public void run(){
try{
if(numUpload<maxUpload){
OutFlux=new ObjectOutputStream(sock.getOutputStream());
InFlux=new ObjectInputStream(sock.getInputStream());
numUpload++;
OutFlux.writeObject(new Integer(Costanti.OK));
OutFlux.flush();
String filename=(String)InFlux.readObject();
int byteRicevuto;
InFile=new FileInputStream(Costanti.FOLDER+filename);
while ((byteRicevuto=InFile.read())!=-1){
OutFlux.write(byteRicevuto);
OutFlux.flush();
}
}
else{
OutFlux.writeObject(Costanti.ABORTED);
OutFlux.flush();
}
OutFlux.close();InFlux.close();

}catch(Exception e){System.out.println("Eccezione durante l'invio");e.printStackTrace();};

}
}

Scusate per l'indentazione ma postando avevo problemi...vi ringrazio in anticipo un saluto! :)

oregon
27-05-2007, 12:42
Mi sa che devi postare nel forum riservato a Java ... per l'indentazione usa i Tag CODE (tasto #) ...

alka
27-05-2007, 14:17
In genere, le discussioni le spostiamo, senza che sia necessario aprirne una nuova.
Comunque, chiudo.

Loading