Announcement

Collapse
No announcement yet.

TCP File Transfer

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TCP File Transfer

    hi!

    kann mir jemand sagen, wie ich den folgenden code umschreiben muss, um via tcp-ip ein file zu senden. und zwar so, dass nach dem senden am client und server die verbindung (sockets) offen bleibt.
    also konkret: ich müsste zuvor die filegröße übertragen, und dann beim empfangen aus der schleife springen, wenn das gesamte file übertragen wurde. denn ich habe nach dem filetransfer noch andere dinge mit der tcp-verbindung vor. zb. normale nachrichtenübertragung.
    ich bin mir auch nicht sicher ob der code so stimmt. aber ich hoffe ich habe mich verständlich genug ausgedrückt.

    probiere schon seit ewigkeiten herum und komme auf keine brauchbare lösung. auch sonst im internet gibt es nichts dazu. aber viel hatten anscheinend schon das selbe problem wie ich.


    hier die codeteile:
    sender:
    Code:
    boolean retry = true;
        	    while (retry) {
        	      System.out.println("Waiting...");
    
        	      System.out.println("Accepted connection : " + transferSocket);
    
        	      // sendfile
        	      File myFile = new File (path);
    
                  //hier würde ich gerne die filegröße ermitteln und senden
    
        	      byte [] mybytearray  = new byte [(int)myFile.length()];
        	      FileInputStream fis = new FileInputStream(myFile);
        	      BufferedInputStream bis = new BufferedInputStream(fis);
        	      bis.read(mybytearray,0,mybytearray.length);
        	      OutputStream os = transferSocket.getOutputStream();
        	      System.out.println("Sending...");
        	      os.write(mybytearray,0,mybytearray.length);
        	      os.flush();
        	      
        	      retry = false;
        	      }
    receiver:

    Code:
                
                //hier müsste ich die dateigröße empfangen und in filesize speichern
                long filesize=
    
        	    int bytesRead;
        	    int current = 0;
    
        	    // receive file
        	    byte [] mybytearray  = new byte [filesize];
        	    InputStream is = transferSocket.getInputStream();
        	    FileOutputStream fos = new FileOutputStream("copyfile.txt");
        	    BufferedOutputStream bos = new BufferedOutputStream(fos);
        	    bytesRead = is.read(mybytearray,0,mybytearray.length);
        	    current = bytesRead;
    
        	    do {
        	       bytesRead =
        	          is.read(mybytearray, current, (mybytearray.length-current));
        	       if(bytesRead >= 0) current += bytesRead;
        	    } while(bytesRead <= filesize);
    
        	    bos.write(mybytearray, 0 , current);
        	    bos.flush();
        	    bos.close();
Working...
X