# Datentransfer?



## darkeye2 (28. Nov 2009)

hallo, ich bin soweit, dass ich es geschafft habe, einen chat clienten zu bauen, der daten an einen (auch von mir gemachten) server schickt und dieser die dann an alle clints verteilt, oder  an einen bestimmten clinten sendet.

Jetzt würde ich gerne daten von einem clienten an einen beliebigen anderen transportieren, z.b. eien text datei, oder ein vidoe, oder sonstwas, halt eine beliebige datei. Normal würde ich das wenn ich auf einen pc was kopieren möchte so machen:

```
void copy(FileChannel in, FileChannel out)throws Exception{
 long position = 0;
long transfered;
long remaining = in.size();
while(remaining > 0){
transfered = in.transferTo(position, remaining, out);
 position += transfered;
 remaining -= transfered;
}}
```

aber wie  übertrage ich die daten jezt an eine andere ip?


----------



## HoaX (28. Nov 2009)

Einfach blöckweise die Datei auslesen und an den Server schicken. Je nach dem wie du dir das protokolltechnisch vorgestellt hast.
Eine Datei blockweise auslesen geht leicht über FileInputStream.


----------



## darkeye2 (28. Nov 2009)

hmm, bin da in dem bereich noch net sehr weit, wie könnte ich den jetzt  so einen block übertragen? bekannt vom anderen clienten ist nur  die ip (mehr braucht man ja auch net)

MfG
darkeye


----------



## tom198 (28. Nov 2009)

Hallo,
ist zwar nicht blockweise und auch sonst nicht besonders schön der Code, aber als erster Ansatz vielleicht nützlich.

Server

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

class File_Server
{
  public static void main( String[] args ) throws Exception
  {
    ServerSocket srvsock = new ServerSocket( 50000 );
    Socket sock = null;
    String s;
    Byte snakebyte = 0;
    PrintStream os = null;
    
    while (true) {
        try {
                sock = srvsock.accept();
                
                if (sock.isConnected()) {
                        System.out.println("Connected");
                }
                
                File f = new File("C:\\Dokumente und Einstellungen\\nutzer\\Desktop\\prank.wma");  
                DataInputStream in = new DataInputStream( new FileInputStream (f) );
               
                os = new PrintStream( sock.getOutputStream() );
                
                boolean stop = false;
                
                
               while (stop == false) { 
                    try {
                        snakebyte = in.readByte();
                    }
                    catch (EOFException eofe) {
                        stop = true;
                    }
                    if ( stop == false) {  
                            //sende-action
                            os.write( snakebyte );
                    }
                   
                }  
                     
            }   
         catch ( /* UnknownHostException is a */ IOException e ) {
                e.printStackTrace();
            }
         finally
            {
                if ( sock != null )
                try { sock.close(); } catch ( IOException e ) { e.printStackTrace(); }
                try { os.close(); } catch ( Exception e ) { e.printStackTrace(); }
                System.out.println("Disconnected");
                System.exit(0);
            } //finally ende
    } //while ende   
        
  }//main ende
}//class ende
```

Client

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

class File_Client
{
  public static void main()
  {
    Socket t = null;
    Byte snakebyte = 0;
    
    try
    {
      t = new Socket("localhost", 50000 );
      
          DataInputStream in = new DataInputStream( t.getInputStream());
          File f = new File("C:\\Dokumente und Einstellungen\\nutzer\\Desktop\\prank_copy.wma");  
          PrintStream os = new PrintStream( f );
          
          boolean stop = false;
          
           while (stop == false) { 
                    try {
                        snakebyte = in.readByte();
                    }
                    catch (EOFException eofe) {
                        stop = true;
                    }
                    if ( stop == false) {  
                            //sende-action
                            os.write( snakebyte );
                    }
                   
                }  
          
          os.close();
          
          
    }
    catch ( /* UnknownHostException is a */ IOException e ) {
      e.printStackTrace();
    }
    finally
    {
      if ( t != null )
        try { t.close(); } catch ( IOException e ) { e.printStackTrace(); }
    }
  }
}
```

Viel Spaß beim erweitern und strukturieren 
der tom


----------



## darkeye2 (28. Nov 2009)

danke für den code, werde mir den gleich mal genauer anschauen, ich denke, so als ansatzt sollte er reichen, falls nicht, melde ich mich wieder.

MfG
darkeye


----------

