A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Lu.

初级黑马

  • 黑马币:22

  • 帖子:7

  • 精华:0

© Lu. 初级黑马   /  2019-10-10 23:04  /  910 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

需求说明:我们来做一个“文件上传案例”,有以下要求:
将项目中的一个图片,通过客户端上传至服务器

答案
操作步骤:
1,创建服务器,等待客户端连接
2,创建客户端Socket,连接服务器
3,获取Socket流中的输出流,功能:用来把数据写到服务器
4,创建字节输入流,功能:用来读取数据源(图片)的字节
5,把图片数据写到Socket的输出流中(把数据传给服务器)
6,客户端发送数据完毕,结束Socket输出流的写入操作,告知服务器端
7,获取Socket的输入流
8,创建目的地的字节输出流
9,把Socket输入流中的数据,写入目的地的字节输出流中
10,获取Socket的输出流, 作用:写反馈信息给客户端
11,写反馈信息给客户端
12,获取Socket的输入流  作用: 读反馈信息
13,读反馈信息
代码:
public class TCPServer {
        public static void main(String[] args)throws IOException {
                //1创建服务器对象 
                ServerSocket server = new ServerSocket(9898);
                //2等待客户端连接   如果有客户端连接  获取到客户端对象 
                Socket s = server.accept();
                //3当前在服务器中  读取数据
                InputStream in = s.getInputStream();
                //4当前在服务器中  将数据写到流中
                FileOutputStream fos = new FileOutputStream("/Users/apple/Documents/复制品.JPG");
                byte[] bytes = new byte[1024];
                int len = 0 ;
                while((len = in.read(bytes))!=-1){
                        fos.write(bytes, 0, len);
                }
                //5写完数据提示上传成功
                s.getOutputStream().write("上传成功".getBytes());
                //6释放资源
                fos.close();
                s.close();
                server.close();
        }
}

public class TCPCleint {
        public static void main(String[] args)throws IOException {
                //1创建服务器对象 
                Socket s = new Socket("127.0.0.1", 9898);
                //2指定路径
                FileInputStream fis = new FileInputStream("/Users/apple/Desktop/1.JPG");
                //3读取服务器数据
                OutputStream out = s.getOutputStream();
                byte[] bytes = new byte[1024];
                int len = 0;
                while((len = fis.read(bytes))!=-1) {
                        out.write(bytes,0,len);
                }
                //4告知书写完毕
                s.shutdownOutput();
                //5书写到服务器
                InputStream in = s.getInputStream();
                len = in.read(bytes);
                System.out.println("服务器:"+new String(bytes,0,len));
                //6释放资源
                fis.close();
                s.close();
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马