본문 바로가기

개발하자/JAVA고급

파일보내기/파일크기보내기

package min2;

import java.io.*;
// 받는부분
import java.net.*;
import java.util.*;

public class FileR {
   public static void main(String[] args)throws Exception {
     
      Socket s=new Socket("192.168.1.159",7777);
      // 민정이한테 소켓연결
     
      InputStream is = s.getInputStream();
      Scanner sc = new Scanner(is);
      String str = sc.nextLine();
      System.out.println("온거"+str);
      //String[] k = str.split("/");
      //System.out.println("받을데이터크기 :"+k[0]);
      //System.out.println("받을데이터형식 :"+k[1]);
     
     
      DataInputStream dis=new DataInputStream(s.getInputStream());
      //나한테 보내는 데이터를 일음    
      FileOutputStream fos=new FileOutputStream("보내준.hwp");
      //전송받은 파일을 내 컴퓨터에 출력(저장)한다
      byte[] buffer=new byte[8*1024]; //바이트배열생성
     try{
      while(true){
       
         int len=dis.read(buffer, 0, 8*1024);
         //buffer에 0번째부터 8x1024만큼 읽는다.
         if(len==-1){//만약에 읽을께 없으면 -1을 출력하고
             System.out.println("다운성공");
            break;//브레이크
         }
         fos.write(buffer, 0, len); // 8키로바이트 용량만큼의 길이만큼 쓴다. 이걸 반복함        
      } 
     }
     catch(Exception e){}
   }
}

 

=========================

package fileRW;

import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class fileW {
    public static void main(String[] args) throws Exception {
       ServerSocket ss = new ServerSocket(7777);//포트번호 7777로 객체를 생성함
       Socket s = ss.accept(); // 누가 접속을 하면 이 라인이 넘어감
      
       DataOutputStream dos = new DataOutputStream(s.getOutputStream());
       //데이터 보내기
       FileInputStream fis = new FileInputStream(
             "D:/인사.hwp");
       System.out.println(fis.available()+"&");
       //파일읽어서 보내기
       byte[] buffer=new byte[8*1024]; //바이트 배열 생성
      // byte[] buffer2=new byte[fis.available()];
      
       System.out.println("전송시작");
      
      //buffer2=(fis.available()+"").getBytes();
     // System.out.println("버퍼2:"+buffer2);
       OutputStream os = s.getOutputStream();//소켓에 쓸 아웃풋스트림을가져옴
          BufferedOutputStream tt = new BufferedOutputStream(os);//보조스트림으로 속도향상
          tt.write(fis.available());// 입력한거를 바이트배열로 출력함
          tt.flush();//바이트가 안찼지만 강제로 보냄 , 만약 바이트가 꽉 차면 오토플러쉬로자동으로 날라감
     
       while(true){
          int len=fis.read(buffer, 0, 8*1024);
          if(len==-1){
             System.out.println("파일 전송 완료");
             break;
          }
          dos.write(buffer, 0, len);
          dos.flush();
         
       }
    }
 }