Avatar billede azazzs Nybegynder
08. maj 2006 - 10:12 Der er 9 kommentarer og
1 løsning

Sende en fil over sockets

hvordan sender jeg en fil over netværket med sockets
Avatar billede spaceus Nybegynder
08. maj 2006 - 11:50 #1
Avatar billede arne_v Ekspert
08. maj 2006 - 12:58 #2
et super simpelt eksempel:

import java.io.*;
import java.net.*;

public class Server {
  public static void main(String[] args) throws Exception {
      ServerSocket ss = new ServerSocket(9999);
      Socket s = ss.accept();
      InputStream is = s.getInputStream();
      OutputStream os = new FileOutputStream("C:\\z2.zip");
      byte[] b = new byte[10000];
      int n;
      while((n = is.read(b)) >= 0) {
        os.write(b, 0, n);
      }
      os.close();
      is.close();
  }
}

import java.io.*;
import java.net.*;

public class Client {
  public static void main(String[] args) throws Exception {
      Socket s = new Socket("localhost", 9999);
      OutputStream os = s.getOutputStream();
      InputStream is = new FileInputStream("C:\\z1.zip");
      byte[] b = new byte[10000];
      int n;
      while((n = is.read(b)) >= 0) {
        os.write(b, 0, n);
      }
      os.close();
      is.close();
  }
}
Avatar billede azazzs Nybegynder
08. maj 2006 - 13:25 #3
jeg takker :)
Avatar billede azazzs Nybegynder
08. maj 2006 - 13:25 #4
nogle der vil have nogle point f.eks arne eller
Avatar billede spaceus Nybegynder
08. maj 2006 - 13:31 #5
kun hvis vi ikke kan blive fri.... arne gav eksemplet.. måske lidt nemmere at overskue... det styrer du bare du lukker emnet ned ;)
Avatar billede azazzs Nybegynder
08. maj 2006 - 13:38 #6
nu får du dem, så må jeg bare skylde :)
Avatar billede arne_v Ekspert
08. maj 2006 - 15:05 #7
det gaar daeleme staerkt her ...
Avatar billede azazzs Nybegynder
08. maj 2006 - 15:21 #8
arne jeg kommer lige med et noob spørgsmål mere det eksempel du lavede her virker fint, men hvad nu hvis jeg ikke vil lukke min input output efter jeg har skrevet filen...  jeg kan opretter en omgang point til dig :)
Avatar billede arne_v Ekspert
08. maj 2006 - 15:37 #9
jeg har ogsaa et eksempel som uploader 3 filer !

:-)

import java.io.*;
import java.net.*;

public class Server2 {
  public static void main(String[] args) throws Exception {
      ServerSocket ss = new ServerSocket(9999);
      Socket s = ss.accept();
      DataInputStream is = new DataInputStream(s.getInputStream());
      save("C:\\z1copy.zip", is);
      save("C:\\z2copy.zip", is);
      save("C:\\z3copy.zip", is);
      is.close();
  }
  public static void save(String filename, DataInputStream is) throws Exception {
      int totsize = is.readInt();
      OutputStream os = new FileOutputStream(filename);
      byte[] b = new byte[10000];
      int n;
      int size = 0;
      while(size < totsize) {
        n = is.read(b, 0, Math.min(b.length, totsize - size));
        os.write(b, 0, n);
        size += n;
      }
      os.close();
  }
}


import java.io.*;
import java.net.*;

public class Client2 {
  public static void main(String[] args) throws Exception {
      Socket s = new Socket("localhost", 9999);
      DataOutputStream os = new DataOutputStream(s.getOutputStream());
      upload("C:\\z1.zip", os);
      upload("C:\\z2.zip", os);
      upload("C:\\z3.zip", os);
      os.close();
  }
  public static void upload(String filename, DataOutputStream os) throws Exception {
      int size = (int)(new File(filename)).length();
      os.writeInt(size);
      InputStream is = new FileInputStream(filename);
      byte[] b = new byte[10000];
      int n;
      while((n = is.read(b)) >= 0) {
        os.write(b, 0, n);
      }
      is.close();
  }
}
Avatar billede arne_v Ekspert
08. maj 2006 - 15:50 #10
det kan naturligvis yderligere forbedres til ogsaa at sende filnavn over socket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester