Server
package com.xiaoqiang.filetransfer;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server implements Runnable {
private ServerSocket server = null;
private Socket socket = null;
public Server() {
try {
server = new ServerSocket(6688);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
while (true) {
try {
String filePath = "F:\\tomcat.rar";
File file = new File(filePath);
System.out.println("文件长度:" + file.length());
socket = server.accept();
System.out.println("客户端连接成功");
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));
DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath)));
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
System.out.println("接收到信息"+ois.readObject().toString());
byte[] b = new byte[1024];
int len = 0;
while((len = dis.read(b)) != -1){
dos.write(b, 0, len);
}
dos.flush();
dis.close();
socket.close();
System.out.println(file.getName() + "传输成功");
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new Thread(new Server()).start();
}
}
Cilent
package com.xiaoqiang.filetransfer;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
public class Cilent {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("localhost", 6688);
File file = new File("F:\\1.rar");
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject("这是一个来自客户端的访问");
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
byte[] b = new byte[1024];
int len = 0,time = 1;
int maxsize = dis.available();
double d = maxsize / (1024.0);
while ((len = dis.read(b)) != -1) {
dos.write(b, 0, len);
}
System.out.println("传输完成Cilent");
dos.close();
dis.close();
socket.close();
}
}