简单的传输文件范例

package j2se.core.net.tcp.file;


import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
* 简单的传输文件范例(接受端)
*
*/
public class Server {

public static void main(String[] args) throws IOException {
// 在8888端口创建一个 ServerSocket
ServerSocket server = new ServerSocket(8888);
// 循环等待客户的连接
while (true) {
// 主线程会一直阻塞到客户连接的传入
Socket socket;
try {
socket = server.accept();
BufferedOutputStream output = new BufferedOutputStream(
new FileOutputStream(
new File(socket.getPort() + ".tmp")));
byte[] data = new byte[1024];
while (true) {

int i = socket.getInputStream().read(data);
if (i == -1)
break;
output.write(data, 0, i);
}

output.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}

}
}

}

package j2se.core.net.tcp.file;


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

/**
* 简单的传输文件范例(发送端)
*
*/
public class Client {

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);

String ip = "127.0.0.1";
int port = 8888;

System.out.println("请输入文件名:");
String s = scan.nextLine();

try {
Socket socket = new Socket(ip, port);
BufferedOutputStream output = new BufferedOutputStream(socket
.getOutputStream());
BufferedInputStream input = new BufferedInputStream(
new FileInputStream(new File(s)));
try {
byte[] data = new byte[1024];
while (true) {
int i = input.read(data);
if (i == -1)
break;
output.write(data, 0, i);
}
output.flush();
} catch (Exception e) {
// 由于服务器主动断连接,所以会出现异常
} finally {
output.close();
input.close();
socket.close();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}

原文地址:https://www.cnblogs.com/angel512/p/5868146.html