visto che mi hai detto ke ho 13000 caratteri li sfrutto
le due funzioni FileSend e File f sono quelle x la ricezione e per l'invio dei file...!!
codice:
import java.net.*;
import java.io.*;
/**
*
* La classe Server racchiude tutti i metodi di invio dei vari messaggi e di comunicazione di eventuali connessioni e disconnessioni degli utenti
*
* */
public class Server
{
public Connessione[] utenti = new Connessione[20];
private String ip;
private ServerSocket server;
private Socket richieste = new Socket();
private String result = null;
public String[] listok = new String[20];
public int t = 0;
private int i = 0;
public String resulto;
public String mitt;
public File dest=null;
public InputStream ricezione;
public FileOutputStream spedizione;
public OutputStream www;
public FileInputStream iii;
public String destino;
public Socket ricevi;
public Socket asfile;
public void Server(){
try {
server = new ServerSocket(7007);
this.run();
} catch(IOException e) {
e.printStackTrace();
}
}
public void Ilist(String ricevi) {
try {
listok[t] = ricevi;
t++;
String invio = null;
for (int e = 0; e < 20;e++){
if (utenti[e].nome == null){}
else{
invio = utenti[e].nome;
}
if (invio.equals(ricevi)){
for(int o = 0; o < 20 ; o++){
if (listok[o] == null){}
else{
utenti[e].out.println("LISTA;"+listok[o]+";1");
//System.out.println(listok[o]);
}
}
}
}
} catch(Exception e) {
}
}
public void BroadAck(String result) {
try {
this.result = result;
for (int j = 0; j < 20;j++){
utenti[j].out.println(result);
}
} catch(Exception e) {
e.printStackTrace();
}
}
public void Msg(String mess, String dest, String mitt) {
try {
for (int e = 0; e < utenti.length;e++){
String invio = utenti[e].nome;
if (invio.equals(dest)){
utenti[e].out.println("MSG;"+dest+";"+mitt+";"+mess);
} else {}
}
} catch(Exception e) {
e.printStackTrace();
}
}
public void Filef (String mitt,String result) {
this.destino=result;
this.mitt = mitt;
System.out.println("Il server sta mandando il file a:"+result);
System.out.println( "Server in ascolto..." );
System.out.println( "Ricezione file in corso..." );
for (int e = 0; e < 2; e++){
String invio = utenti[e].nome;
if (invio.equals(mitt)){
System.out.println("istanzio socket");
ricevi = utenti[e].ricevi;
System.out.println("a");
try{
System.out.println(ricevi);
ricezione = ricevi.getInputStream();
System.out.println(ricezione);
System.out.println("b");
spedizione = new FileOutputStream( "c:\\FileRicevuto.jpg" );
} catch( IOException huhu) {}
System.out.println("c");
} else {System.out.println("c1");}
System.out.println("giro for");
}
System.out.println(ricezione);
System.out.println("c2");
byte buffer[] = new byte[4096];
long totale = 0L;
int letti = 0;
boolean tru=true;
System.out.println("d");
while( tru ) {
try {
letti = ricezione.read(buffer);
System.out.println("f");
System.out.println(letti);
System.out.println("g");
if( letti>0 ) {
System.out.println("primo giro");
spedizione.write( buffer,0,letti );
totale= totale + letti;
} else {
System.out.println("tru = false");
tru=false;
}
}catch( IOException e ) {}
}
System.out.println("finito while");
try{
//spedizione.flush();
// spedizione.close();
// ricezione.close();
qua è il mio problema.....e anke sotto!!!
quando ritorno dove ho chiamato questa funzione...se faccio un System.out.println(in.readLine());
quello che ricevo è null...
e mi da questa eccezione... Exception in thread "Thread-3" java.lang.NullPointerException
System.out.println( "Ricezione completata!" );
File destinatario =new File ("c:\\FileRicevuto.jpg");
for (int e = 0; e < 2; e++){
String invio = utenti[e].nome;
if (invio.equals(destino)){
utenti[e].out.println("FILOK;");
System.out.println("inviato FILOK");
} else {System.out.println("c1");}
System.out.println("giro for");
}
FileSend (destinatario,destino);
}catch (Exception e){}
}
public void FileSend (File destinatario,String result) {
this.dest=destinatario;
this.result=result;
try{
System.out.println( "Connessione..." );
System.out.println("L'ip del file send è"+result);
System.out.println("Creazione socket");
for (int e = 0; e < 2;e++){
System.out.println("a");
String invio = utenti[e].nome;
System.out.println(invio);
if (invio.equals(result)){
System.out.println("b");
asfile = utenti[e].ricevi;
System.out.println(asfile);
www = asfile.getOutputStream();
System.out.println("c");
iii = new FileInputStream(dest);
System.out.println("d");
} else {}
}
System.out.println("e");
byte buffer[] = new byte[4096];
long totale = 0L;
System.out.println( "Invio file in corso..." );
int letti = 0;
boolean tre = true;
while( tre ) {
try {
letti = iii.read(buffer);
System.out.println(letti);
if( letti>0 ) {
www.write( buffer,0,letti );
System.out.println(www);
totale= totale + letti;
} else {
tre = false;
}
} catch( IOException e ) {
tre = false;
}
}
//www=null;
//iii=null;
//iii.close();
//www.flush();
//www.close();
System.out.println( "Invio file terminato [" + totale + " bytes inviati]" );
}catch (IOException e){}
}
public void run() {
try{
while(true){
richieste = server.accept();
utenti[i] = new Connessione(richieste,this);
i++;
}
} catch(IOException e) {
e.printStackTrace();
}
}
}