javaseday31(图片上传服务端 客户端单线程)

来源:互联网 发布:贵州毕节烟草网建数据 编辑:程序博客网 时间:2024/06/12 01:38
// 1创建客户端socket        Socket s = new Socket("localhost", 10006);        // 2、读取客户端要上传的文件        FileInputStream fis = new FileInputStream("h://1.png");        // 3、获取socket输出流 将读到的图片数据发送给服务器        OutputStream out = s.getOutputStream();        byte[] buf = new byte[1024];        int len =0;        while((len=fis.read(buf))!=-1) {            out.write(buf,0,len);        }        //告诉服务端 数据发送完毕 让服务器停止读取        s.shutdownOutput();//要明确关的是哪个socket流 不然可能引起 流先关闭的异常 即连接丢失        //读取服务端发回的内容        InputStream in = s.getInputStream();        byte[] bufIn =new byte[1024];        int lenIn = in.read(bufIn);        String text = new String(bufIn,0,lenIn);        System.out.println(text);        fis.close();        s.close();
//创建一个socket的服务端        ServerSocket ss = new ServerSocket(10006);        //获取客户端        Socket s = ss.accept();        String ip = s.getInetAddress().getHostAddress();        System.out.println(ip);        //读取客户端发来的数据        InputStream in =s.getInputStream();        File dir = new File("h:\\pic");        if(dir.exists()) {            dir.mkdirs();        }        File file = new File(dir,ip+".png");        //将读取到的数据存储到文件中        FileOutputStream fos = new FileOutputStream(file);        byte[] buf =new byte[1024];        int len =0;        while((len=in.read(buf))!=-1) {            fos.write(buf, 0, len);        }        //获取socket输出流 将上传成功字样发给客户端        OutputStream out = s.getOutputStream();        out.write("上传成功".getBytes());        fos.close();        s.close();        ss.close();
阅读全文
0 0
原创粉丝点击