Java学习笔记——Socket实现文件传输

Posted Tomas曼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习笔记——Socket实现文件传输相关的知识,希望对你有一定的参考价值。

我越是逃离,却越是靠近你。

我越是背过脸,却越是看见你。

我从你开始,

我在你结束。

 

需求:实现局域网下socket传输文件.

客户端步骤:

1、建立与服务器的连接

2、创建client输出流

3、创建输入流,绑定本地文件

4、读取文件后输出给服务器

服务器端步骤:

1、启动服务器

2、创建accept输入流

3、创建输出流绑定本地文件

4、读取客户端信息写入本地文件

1.字节流传输文件.

 1 public class Client {
 2 
 3     public static void main(String[] args) throws IOException {
 4         Socket client = new Socket("192.168.0.112", 50000);
 5         OutputStream os = client.getOutputStream();
 6         FileInputStream fis = new FileInputStream("/home/yanshaochen/public/2017-05-06 15-12-02屏幕截图.png");
 7         byte[] bytes = new byte[1024];
 8         int data;
 9         while((data = fis.read(bytes))!= -1){
10             os.write(bytes, 0, data);
11         }
12         fis.close();
13         client.close();
14         System.out.println("发送成功!");
15     }
16 }

 

 1 public class Server {
 2 
 3     public static void main(String[] args) throws Exception {
 4         ServerSocket server = new ServerSocket(50000);
 5         System.out.println("listening..");
 6         Socket accept = server.accept();
 7         InputStream is = accept.getInputStream();
 8         FileOutputStream fos = new FileOutputStream("d:\\download\\屏幕截图.png");
 9         byte[] bytes = new byte[1024];
10         int data;
11         while((data = is.read(bytes))!=-1){
12             fos.write(bytes, 0, data);
13         }
14         fos.close();
15         server.close();
16 }

 

2.字符流传输文件txt.

 1 public class Client {
 2 
 3     public static void main(String[] args) throws IOException {
 4         
 5         Socket client = new Socket("192.168.0.112", 50000);
 6         OutputStream os = client.getOutputStream();
 7         Reader fr = new FileReader("/home/yanshaochen/public/zfsm.txt");
 8         BufferedReader br = new BufferedReader(fr);
 9         String buffer;
10         while((buffer = br.readLine())!= null){
11             buffer += "\r\n";
12             os.write(buffer.getBytes());
13         }
14         br.close();
15         client.close();
16         System.out.println("发送成功!");
17     }
18 }

 

 1 public class Server {
 2 
 3     public static void main(String[] args) throws Exception {
 4 
 5         ServerSocket server = new ServerSocket(50000);
 6         System.out.println("listening..");
 7         Socket accept = server.accept();
 8         InputStream is = accept.getInputStream();
 9         FileWriter fw = new FileWriter("d:\\download\\zfsm.txt");
10         byte[] bytes = new byte[1024];
11         int data;
12         while((data = is.read(bytes)) != -1){
13             fw.write(new String(bytes, 0, data));
14         }
15         fw.close();
16         server.close();
17     }
18 
19 }

 

以上是关于Java学习笔记——Socket实现文件传输的主要内容,如果未能解决你的问题,请参考以下文章

JAVA Socket 编程学习笔记

python 3.x 学习笔记13 (socket_ssh and socket_文件传输)

Day3: Python学习笔记之计算机基础——网络片

Socket网络编程学习笔记 UDP辅助TCP实现点对点传输案例 -- UDP广播搜索获取IP/Port

笔记之_Java整理socket

JAVA Socket 编程学习笔记