一、文件接收端运行界面:
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源码分析