Socket复制文件编程Demo

来源:互联网 发布:java 方法区 内存溢出 编辑:程序博客网 时间:2024/06/07 01:13
package com.javase.net;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.ServerSocket;import java.net.Socket;import org.junit.Test;/** * net服务器客户端的交互demo * 运行的时候需要先运行服务器... * @author Bo * */public class Demo {     /**      * 1.服务器端,读取客户端socket发送来的数据      * is = socket.getInputStream();      * 2.写      * fos.write(buf,0,realcount);      */     @Test     public void server() {           ServerSocket server = null;           Socket socket1 = null;           InputStream is = null;           FileOutputStream fos = null;//         BufferedWriter bwWriter = null;           try {                server = new ServerSocket(8886);                while (true) {                     socket1 = server.accept();                     is = socket1.getInputStream();                     fos = new FileOutputStream("girl2.jpg");//                   bwWriter = new BufferedWriter(new OutputStreamWriter(socket1.getOutputStream()));                     byte[] buf = new byte[1024];                     int realcount = is.read(buf);                     while (realcount != -1) {                           fos.write(buf, 0, realcount);                           realcount = is.read(buf);                     }//                   bwWriter.write("发送成功!");//                   bwWriter.newLine();//                   bwWriter.flush();                }           } catch (Exception e) {                e.printStackTrace();           } finally {                try {                     fos.close();                } catch (IOException e) {                     e.printStackTrace();                }                try {                     is.close();                } catch (IOException e) {                     e.printStackTrace();                }                try {                     socket1.close();                } catch (IOException e) {                     e.printStackTrace();                }                try {                     server.close();                } catch (IOException e) {                     e.printStackTrace();                }           }     }     /**      *1.客户端本地读取girl.jpg文件,      *fis = new FileInputStream("girl.jpg");      *fis.read(buf);      *      *2.socket上传      * socket.getOutputStream();      *      *      */     @Test     public void client() {           Socket socket2 = null;           FileInputStream fis = null;           OutputStream os = null;//         BufferedReader bread = null;           try {                socket2 = new Socket("localhost", 8886);                fis = new FileInputStream("girl.jpg");                os = socket2.getOutputStream();//              bread = new BufferedReader(new InputStreamReader(socket2.getInputStream()));                byte[] buf = new byte[1024];                int realcount = fis.read(buf);                while(realcount != -1) {                     os.write(buf, 0, realcount);                     realcount = fis.read(buf);                }                socket2.shutdownOutput();//              String readLine = bread.readLine();//              System.out.println(readLine);           } catch (Exception e) {                e.printStackTrace();           } finally {                try {                     os.close();                } catch (IOException e) {                     e.printStackTrace();                }                try {                     fis.close();                } catch (IOException e) {                     e.printStackTrace();                }                try {                     socket2.close();                } catch (IOException e) {                     e.printStackTrace();                }           }     }}
原创粉丝点击