Created
May 14, 2012 10:43
-
-
Save CarlEkerot/2693246 to your computer and use it in GitHub Desktop.
Simple java file transfer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package client; | |
import java.io.DataOutputStream; | |
import java.io.FileInputStream; | |
import java.io.IOException; | |
import java.net.Socket; | |
public class FileClient { | |
private Socket s; | |
public FileClient(String host, int port, String file) { | |
try { | |
s = new Socket(host, port); | |
sendFile(file); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} | |
} | |
public void sendFile(String file) throws IOException { | |
DataOutputStream dos = new DataOutputStream(s.getOutputStream()); | |
FileInputStream fis = new FileInputStream(file); | |
byte[] buffer = new byte[4096]; | |
while (fis.read(buffer) > 0) { | |
dos.write(buffer); | |
} | |
fis.close(); | |
dos.close(); | |
} | |
public static void main(String[] args) { | |
FileClient fc = new FileClient("localhost", 1988, "cat.jpg"); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package server; | |
import java.io.DataInputStream; | |
import java.io.FileOutputStream; | |
import java.io.IOException; | |
import java.net.ServerSocket; | |
import java.net.Socket; | |
public class FileServer extends Thread { | |
private ServerSocket ss; | |
public FileServer(int port) { | |
try { | |
ss = new ServerSocket(port); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
public void run() { | |
while (true) { | |
try { | |
Socket clientSock = ss.accept(); | |
saveFile(clientSock); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
} | |
private void saveFile(Socket clientSock) throws IOException { | |
DataInputStream dis = new DataInputStream(clientSock.getInputStream()); | |
FileOutputStream fos = new FileOutputStream("testfile.jpg"); | |
byte[] buffer = new byte[4096]; | |
int filesize = 15123; // Send file size in separate msg | |
int read = 0; | |
int totalRead = 0; | |
int remaining = filesize; | |
while((read = dis.read(buffer, 0, Math.min(buffer.length, remaining))) > 0) { | |
totalRead += read; | |
remaining -= read; | |
System.out.println("read " + totalRead + " bytes."); | |
fos.write(buffer, 0, read); | |
} | |
fos.close(); | |
dis.close(); | |
} | |
public static void main(String[] args) { | |
FileServer fs = new FileServer(1988); | |
fs.start(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You guys need to set the size for the buffer as the same as your file, also fileSize, the best solution.