Datentransfer?

Status
Nicht offen für weitere Antworten.

darkeye2

Bekanntes Mitglied
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:
Java:
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

Top Contributor
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

Bekanntes Mitglied
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

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

Server
Java:
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
Java:
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 :D
der tom
 

darkeye2

Bekanntes Mitglied
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
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen


Oben