一、文件接收端运行界面:
import java.net.*; import java.io.*; public class ReceiveFile { public static void main(String[] args) { BufferedReader user; int port; ServerSocket serverSkt; Socket clientSkt; BufferedReader fileInfo; BufferedInputStream fileReader; BufferedOutputStream fileWriter; String fileName; PrintStream printStream; try { user = new BufferedReader( new InputStreamReader(System.in)); System.out.println("简易文件接收v0.1版"); System.out.print("连接端口: "); port = Integer.parseInt(user.readLine()); System.out.println("将接收文件于端口: " + port); serverSkt = new ServerSocket(port); while(true) { System.out.println("倾听中...."); clientSkt = serverSkt.accept(); printStream = new PrintStream(clientSkt.getOutputStream()); fileInfo = new BufferedReader(new InputStreamReader(clientSkt.getInputStream())); fileName = fileInfo.readLine(); System.out.println("与" + clientSkt.getInetAddress() + "建立连接"); System.out.print("接收文件 " + fileName + " (yes/no) ? "); if(user.readLine().equals("no")) { printStream.println("no"); clientSkt.close(); } else { printStream.println("yes"); System.out.print("\nOK! 接收文件 " + fileName); fileReader = new BufferedInputStream(clientSkt.getInputStream()); fileWriter = new BufferedOutputStream( new FileOutputStream(fileName+"1")); int readin; while((readin = fileReader.read()) != -1) { //System.out.print("."); fileWriter.write(readin); } fileReader.close(); fileWriter.flush(); clientSkt.close(); System.out.println("\n文件接收完毕!"); } } } catch(IOException e) { System.out.println(e.toString()); } } }
C:\java>java ReceiveFile
简易文件接收v0.1版
连接端口: 2000
将接收文件于端口: 2000
倾听中....
与/127.0.0.1建立连接
接收文件 TransferFile.java (yes/no) ? yes
OK! 接收文件 TransferFile.java
文件接收完毕!
倾听中....
二、文件发送端
import java.net.*;
import java.io.*;
public class TransferFile {
public static void main(String[] args) {
BufferedReader user;
BufferedReader serverInfo;
Socket skt;
BufferedInputStream fileReader;
String remoteHost;
int port;
String fileName;
PrintStream printStream;
try {
user = new BufferedReader(
new InputStreamReader(System.in));
System.out.println("简易档案传送v0.1版");
System.out.print("远端主机: ");
remoteHost = user.readLine();
System.out.print("远端主机连接端口: ");
port = Integer.parseInt(user.readLine());
System.out.print("要传送的文件: ");
fileName = user.readLine();
System.out.println("尝试与 " + remoteHost + " 连接....");
skt = new Socket(remoteHost, port);
System.out.println("连接成功!尝试传送文件....");
serverInfo = new BufferedReader(
new InputStreamReader(skt.getInputStream()));
printStream = new PrintStream(skt.getOutputStream());
printStream.println(fileName);
if(serverInfo.readLine().equals("no")) {
System.out.println("对方拒接接收文件!");
System.exit(0);
}
System.out.print("OK! 传送文件....");
fileReader = new BufferedInputStream(
new FileInputStream(fileName));
int readFile;
while((readFile = fileReader.read()) != -1) {
//System.out.print(".");
printStream.write(readFile);
}
fileReader.close();
printStream.flush();
skt.close();
System.out.println("\n文件传送文件!");
}
catch(UnknownHostException e) {
System.out.println(e.toString());
}
catch(IOException e) {
System.out.println(e.toString());
}
}
}
程序运行界面:
C:\java>java TransferFile
简易档案传送v0.1版
远端主机: 127.0.0.1
远端主机连接端口: 2000
要传送的文件: TransferFile.java
尝试与 127.0.0.1 连接....
连接成功!尝试传送文件....
OK! 传送文件....
文件传送文件!
C:\java>
↑返回目录
前一篇: 深入浅出Java设计模式之迭代器模式
后一篇: AbstractList源码分析