寫這個純粹爲了總結,以前都不寫的。
1,接受端
package sockettest;
import java.io.File;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.Socket;
import java.net.ServerSocket;
public class Receive {
public static void main(String[] args) {
File target; //接收到的文件保存的位置
FileOutputStream save; //將接收到的文件寫入電腦
FileInputStream in; //讀取穿送過來的數據文件
ServerSocket server; //服務器
Socket socket; //套接字
//處理客戶端的請求
try {
//接受前文件的準備
target = new File("C:\\Users\\落塵\\Desktop\\接受圖集\\1.png");
save = new FileOutputStream(target);
server = new ServerSocket(2017); //服務端口設置端口號2018必須與Send類中的端口號相同
//等待客戶端的呼叫
System.out.println("等待客戶端的呼叫");
socket = server.accept(); //阻塞等待客戶端的呼叫
in = (FileInputStream)socket.getInputStream();//通過socket把數據放到in流中
//接收數據
byte[] b = new byte[64];
int n = in.read(b);
while (n != -1) {
save.write(b, 0, n); //寫到你計算機的指定地方
n = in.read(b);
}
socket.close();
server.close();
in.close();
save.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
接受端
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.Socket;
public class Send {
public static void main(String[] args) {
File src; //需要傳送的文件
Socket socket; //套接字
FileInputStream open; //讀取文件
FileOutputStream out; //傳送文件
try {
//需要傳輸的文件的位置
src = new File("C:\\Users\\落塵\\Desktop\\發送圖集\\1.png");
open = new FileInputStream(src);
//連接服務器
socket = new Socket("127.0.0.1", 2017);//連接本機ip,設置端口號2018
out = (FileOutputStream)socket.getOutputStream();
//開始傳送
byte[] b = new byte[64];//總的有個byte臨時存儲發送的數據
int n = open.read(b);
while (n != -1) {
out.write(b, 0, n);
n = open.read(b);
}
System.out.println("發送成功");
//關閉流
out.close();
socket.close();
open.close();
} catch (Exception e) {
System.out.println(e);
}
}
}