package com.herley;
/**
*
* 客戶端
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.util.TimeZone;
public class Send {
public static void main(String[] args) {
File filesrc; //需要傳送的文件
Socket socket; //套接字
FileInputStream open; //讀取文件
FileOutputStream out; //傳送文件
Scanner sc;//鍵盤錄入
Date start;
Date end;
try {
System.out.println("[歡迎使用局域網發送系統,僅支持單文件發送]");
System.out.print("請輸入你要發送的文件路徑!");
System.out.println("(注意格式:文件路徑+后綴名!)");
//需要傳輸的文件
sc = new Scanner(System.in);
String src = sc.nextLine();
filesrc = new File(src);//鍵盤錄入需要傳輸的文件路徑
open = new FileInputStream(filesrc);//創建文件輸入流
//連接服務器
System.out.println("請輸入服務器的ip地址");
sc = new Scanner(System.in);
String url = sc.nextLine();
// System.out.println("請輸入服務器的端口號");
// sc = new Scanner(System.in);
// int port = sc.nextInt();
socket = new Socket(url, 2017);//創建socket
out = (FileOutputStream)socket.getOutputStream();//創建文件輸出流
//開始傳送
byte[] b = new byte[1024];
int n = open.read(b);//首次傳送
// int start = (int)System.currentTimeMillis();
start = new Date();//首次時間
while (n != -1) {
out.write(b, 0, n);
n = open.read(b);
}
// int end = (int)System.currentTimeMillis();
end = new Date();
long l = Send.printSplitTime(start, end);
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("GMT+00:00"));
String hms = formatter.format(l);
System.out.println( "發送成功,耗時:" + hms);
System.out.println("謝謝使用");
//關閉流
out.close();
socket.close();
open.close();
} catch (Exception e) {
System.out.println("文件路徑或者ip有誤");
}
}
public static long printSplitTime(Date start, Date end) {
long interval = (end.getTime() - start.getTime());
//System.out.println("接口耗時:" + interval + "毫秒");
return interval;
}
}
package com.herley;
/**
*
* 服務端
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.Socket;
import java.net.ServerSocket;
import java.util.Scanner;
public class Receive {
public static void main(String[] args) {
File target; //接收到的文件保存的位置
FileOutputStream save; //將接收到的文件寫入電腦
FileInputStream in; //讀取穿送過來的數據文件
ServerSocket server; //服務器
Socket socket; //套接字
//處理客戶端的請求
try {
//接受前文件的准備
System.out.print("請輸入你將要保存文件的地址");
System.out.println("(注意格式:文件路徑+后綴名!)");
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
target = new File(s);
save = new FileOutputStream(target);
server = new ServerSocket(2017); //服務端口
//等待客戶端的呼叫
System.out.println("正在等待客戶端的呼叫........");
socket = server.accept(); //阻塞
in = (FileInputStream)socket.getInputStream();
//接收數據
byte[] b = new byte[64];
int n = in.read(b);
int start = (int)System.currentTimeMillis();
while (n != -1) {
save.write(b, 0, n); //寫入指定地方
n = in.read(b);
}
int end = (int)System.currentTimeMillis();
System.out.println("接收成功,耗時:" + (end-start)+"毫秒");
socket.close();
server.close();
in.close();
save.close();
} catch (Exception e) {
System.out.println(e);
}
}
}