07/12/10 17:59
crashoverride
Ciao, ho programmato una semplice applicazione per inviare file attraverso i socket... Per ora è ancora semplice e da migliorare... Però dopo aver fatto diciamo la "base" che permette appunto l'invio di file ho deciso di provarla ovviamente non solo in locale ma anche con 2 pc collegati tramite 2 servizi internet (scusate ma non sò come dirlo xD) diversi per vedere se funziona... Ho inserito nel client quando viene creato il socket l'indirizzo ip preso tramite whatismyipaddress.com/ viene inserito nel costruttore...
Ora vengono i problemi, infatti in locale funziona correttamente e senza problemi mentre con i 2 pc diversi no...
Come posso risolvere??
Vi lascio anche il sorgente:
Server
Client
Ripeto che il programma deve esere migliorato ma prima di migliorarlo volevo vedere che funzionasse in modo giusto
Attendo risposta
Ora vengono i problemi, infatti in locale funziona correttamente e senza problemi mentre con i 2 pc diversi no...
Come posso risolvere??
Vi lascio anche il sorgente:
Server
import java.net.*; import java.io.*; public class Server{ private ServerSocket ss; private File myFile; private String fileName; public void setFile(File file){ myFile = file; fileName = myFile.getName(); } public Server(File file) throws IOException{ //Settiamo il file da inviare. setFile(file); //Creiamo il socket del server che accetta connessioni //sulla porta 9999; ss = new ServerSocket(9999); //Crea il socket che invia il nome del file Socket nameSenderSocket = ss.accept(); PrintStream ps = new PrintStream(nameSenderSocket.getOutputStream()); ps.println(fileName); nameSenderSocket.close(); //Legge il file e lo inserisce nell'array binaryFile FileInputStream fis = new FileInputStream(myFile); byte[] binaryFile = new byte[(int)myFile.length()]; fis.read(binaryFile); //Accetta la connessione dal Client e inserisce il socket //Ricevuto nel socket s che useremo per inviare il file al client. Socket s = ss.accept(); //Ottentiamo l'outputstream del socket che si sta connettendo //e inviamo il file. OutputStream os = s.getOutputStream(); os.write(binaryFile); //Chiudiamo i stream e il socket. fis.close(); os.close(); s.close(); } public static void main (String args[]) throws IOException{ Server s = new Server(new File("file.rtf")); } }
Client
import java.io.*; import java.net.*; public class Client { public Client() throws IOException { Socket s = new Socket("**.**.***.85",9999); DataInputStream dis = new DataInputStream(s.getInputStream()); String fileName = dis.readLine(); s.close(); System.out.println(fileName); File inputFile = new File(fileName); Socket connessione = new Socket("**.**.***.85",9999); InputStream is = connessione.getInputStream(); FileOutputStream fos = new FileOutputStream(inputFile); int b = 0; while((b = is.read()) != -1){ fos.write(b); } } public static void main(String args[]) throws IOException{ Client c = new Client(); } }
Ripeto che il programma deve esere migliorato ma prima di migliorarlo volevo vedere che funzionasse in modo giusto
Attendo risposta
aaa