Java网络编程:Socket 通信 2

client----发送数据(输出流)------------(输入)-【管道流处理数据】-(输出)------接收数据(输入流)------server

文件传输:

客户端:

  1. 创建Socket连接对象:创建它对应的对接的iP和端口。。。

  2. 创建一个输出流

  3. 传入文件需要文件流读取文件      写出文件

  4. 通知 服务器我传输完成

  5. 接受服务器发过来的

  6. 关闭资源

     

 1 package Demo1.JavaSe.javasocket;
 2 
 3 import java.io.*;
 4 import java.net.InetAddress;
 5 import java.net.Socket;
 6 import java.net.UnknownHostException;
 7 
 8 //文件上传操作
 9 public class JavaDemo2 {
10     //客户端
11     public static void main(String[] args) throws Exception {
12         //client----发送数据(输出流)------------(输入)-【管道流处理数据】-(输出)------接收数据(输入流)------server
13 
14 
15 
16             // 1.创建Socket连接对象:创建它对应的对接的iP和端口。。。
17             Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9999);
18             //2.创建一个输出流
19             OutputStream outputStream = socket.getOutputStream();
20             //3.传入文件需要文件流
21             //读取文件
22             FileInputStream myFileStream = new FileInputStream(new File("src/a123.jpg"));
23             //写出文件
24             byte[] buffer = new byte[1024];
25             int len;
26             while ((len=myFileStream.read(buffer))!=-1){
27                 outputStream.write(buffer,0,len);
28             }
29             //同知服务器我传输完成
30              socket.shutdownOutput();
31             System.out.println("上传成功");
32 
33             //接受服务器发过来的
34         InputStream isput = socket.getInputStream();
35         ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
36         byte[] buffer2 = new byte[1024];
37         int len2;
38         while ((len2=isput.read(buffer2))!=-1){
39             byteArrayOutputStream.write(buffer2,0,len2);
40         }
41         //打印服务端的确认消息
42         System.out.println(byteArrayOutputStream.toString());
43 
44         //关闭资源
45         byteArrayOutputStream.close();
46         isput.close();
47 
48             myFileStream.close();
49             outputStream.close();
50             socket.close();
51 
52 
53 
54     }
55 
56 }

服务器:

  1. 建服务。ServerSocket。。。

  2. 监听客户端消息:Socket accept = serverSocket.accept();//阻塞式监听

  3. 传入文件需要文件流读取文件      写出文件

  4. 获取输入流

  5. 文件输出流:输入流 把信息读取到 缓冲区 返回字节数:文件输出流写入文件

  6. 反馈给客户端消息,关闭

package Demo1.JavaSe.javasocket;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class JavaDemo2Server {
    //服务端
    public static void main(String[] args) throws IOException {
        //1.创建服务。
        ServerSocket serverSocket = new ServerSocket(9999);
        //2.监听客户端消息
        Socket accept = serverSocket.accept();//阻塞式监听
        //3.获取输入流
        InputStream iput = accept.getInputStream();
        //4.文件输出
        FileOutputStream receive = new FileOutputStream(new File("receive.jpg"));
        byte[] buffer = new byte[1024];
        int  len;
        //输入流 把信息读取到   缓冲区  返回字节数
        while ((len = iput.read(buffer))!=-1){
            receive.write(buffer,0,len);
        }
        System.out.println("接受成功"+len+"字节数");


        //反馈给客户端
        OutputStream outputStream = accept.getOutputStream();
        outputStream.write("来自服务器的确认消息!".getBytes());


        //5.关闭
        receive.close();
        iput.close();
        serverSocket.close();



    }
}

猜你喜欢

转载自www.cnblogs.com/gtnotgod/p/13378795.html