黑马程序员技术交流社区

标题: TCP传输文件,自己写的 [打印本页]

作者: 小悟空et    时间: 2015-5-22 10:56
标题: TCP传输文件,自己写的
自己写的,客户端输入要发送的文件路径。
服务端输入接收文件保存的路径和文件名(本来想只需要输入路径,文件名和原来一样,但一下子思路有点空白。哈哈)
客户端:
  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedOutputStream;
  3. import java.io.FileInputStream;
  4. import java.net.Socket;
  5. import java.util.Scanner;


  6. public class FileTrans
  7. {
  8.         public static void main(String[] args) throws Exception
  9.         {
  10.                 Socket s = new Socket("192.168.1.101",10000);
  11.                 BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream());
  12.                 System.out.println("请输入要传输的文件的绝对路路径:");
  13.                 Scanner sc = new Scanner(System.in);               
  14.                 String name = sc.next();
  15.                 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(name));
  16.                 byte[] buf = new byte[1024];
  17.                 int len = 0;
  18.                 while((len=bis.read(buf))!=-1)
  19.                 {
  20.                         bos.write(buf,0,len);
  21.                 }
  22.                
  23.                 bis.close();
  24.                 bos.close();
  25.                 s.close();
  26.                 sc.close();
  27.                
  28.         }
  29. }
复制代码

服务端:
  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedOutputStream;
  3. import java.io.FileOutputStream;
  4. import java.net.ServerSocket;
  5. import java.net.Socket;
  6. import java.util.Scanner;


  7. public class FileRece
  8. {
  9.         public static void main(String[] args) throws Exception
  10.         {
  11.                 ServerSocket ss = new ServerSocket(10000);
  12.                 Socket s = ss.accept();
  13.                 BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
  14.                 System.out.println("有人要给你发文件,请输入要保存的绝对路径,包括文件名和后缀");//创建新的文件用原来的名字还不是很熟练,先这样
  15.                 Scanner sc = new Scanner(System.in);
  16.                 String name = sc.nextLine();
  17.                 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(name));
  18.                 byte[] buf = new byte[1024];
  19.                 int len = 0;
  20.                 while((len = bis.read(buf))!= -1)
  21.                 {
  22.                         bos.write(buf,0,len);                       
  23.                 }
  24.                 bos.close();
  25.                 bis.close();
  26.                 sc.close();
  27.                 ss.close();
  28.         }
  29. }
复制代码

目前这个运行,会同时让客户端和服务端输入路径。接下来我还得修改,让服务端先输入保存路径,再让客户端传输。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2