package com.main;
|
import java.io.DataOutputStream;
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.net.Socket;
|
|
/**
|
* Îļþ´«ÊäClient¶Ë<br>
|
* ¹¦ÄÜ˵Ã÷£º
|
*
|
* @author ³ÐÇΰ
|
* @Date 2019Äê02ÔÂ14ÈÕ
|
* @version 1.0
|
*/
|
public class FileTransferClient extends Socket {
|
|
private static final String SERVER_IP = "127.0.0.1"; // ·þÎñ¶ËIP
|
private static final int SERVER_PORT = 8899; // ·þÎñ¶Ë¶Ë¿Ú
|
|
private Socket client;
|
|
private FileInputStream fis;
|
|
private DataOutputStream dos;
|
|
/**
|
* ¹¹Ô캯Êý<br/>
|
* Óë·þÎñÆ÷½¨Á¢Á¬½Ó
|
* @throws Exception
|
*/
|
public FileTransferClient() throws Exception {
|
super(SERVER_IP, SERVER_PORT);
|
this.client = this;
|
System.out.println("Cliect[port:" + client.getLocalPort() + "] ³É¹¦Á¬½Ó·þÎñ¶Ë");
|
}
|
|
/**
|
* Ïò·þÎñ¶Ë´«ÊäÎļþ
|
* @throws Exception
|
*/
|
public void sendFile() throws Exception {
|
try {
|
File file = new File("D:\\tb_battinf.sql");
|
if(file.exists()) {
|
fis = new FileInputStream(file);
|
dos = new DataOutputStream(client.getOutputStream());
|
|
// ÎļþÃûºÍ³¤¶È
|
dos.writeUTF(file.getName());
|
dos.flush();
|
dos.writeLong(file.length());
|
dos.flush();
|
|
// ¿ªÊ¼´«ÊäÎļþ
|
System.out.println("======== ¿ªÊ¼´«ÊäÎļþ ========");
|
byte[] bytes = new byte[1024];
|
int length = 0;
|
long progress = 0;
|
while((length = fis.read(bytes, 0, bytes.length)) != -1) {
|
dos.write(bytes, 0, length);
|
dos.flush();
|
progress += length;
|
System.out.print("| " + (100*progress/file.length()) + "% |");
|
}
|
System.out.println();
|
System.out.println("======== Îļþ´«Êä³É¹¦ ========");
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
if(fis != null)
|
fis.close();
|
if(dos != null)
|
dos.close();
|
client.close();
|
}
|
}
|
|
/**
|
* Èë¿Ú
|
* @param args
|
*/
|
public static void main(String[] args) {
|
try {
|
FileTransferClient client = new FileTransferClient(); // Æô¶¯¿Í»§¶ËÁ¬½Ó
|
client.sendFile(); // ´«ÊäÎļþ
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|