Java로 전체 스택 파일 콘텐츠 시스템 작성

따라서 우리는 사용자에게 검색하려는 파일의 이름을 묻고 해당 파일의 내용을 보여주는 클라이언트 측과 서버 측을 모두 만들 것입니다.
따라서 클라이언트는 파일 이름을 제공하여 파일 내용을 보내도록 서버에 요청합니다. 서버에 몇 개의 파일이 있습니다. 기존 파일에서 서버는 요청된 파일을 열고 클라이언트는 파일 내용과 함께 파일 이름을 표시하거나 기본적으로 *원격 파일 내용 표시 시스템*을 만듭니다.

분석



Remote File Content Display System이라는 용어를 제쳐두고 문제에 대해 생각해 보면 시스템에는 백엔드와 프런트엔드를 각각 관리하는 서버와 클라이언트 프로그램이 필요하고 소켓을 사용하여 둘 다 통합한다는 것을 알게 됩니다.

추가 분석과 가장 중요한 문제 분석 후, 문제를 해결하기 위해 각 시스템이 수행해야 하는 작업은 다음과 같습니다.

서버 측 :


  • 로컬 포트에서 새 서버 소켓 인스턴스를 시작해야 합니다.
  • 사용자가 제공한 파일을 검색할 디렉토리의 위치를 ​​알아야 합니다.
  • 더 쉽게 검색하려면 현재 디렉토리의 모든 파일을 목록으로 가져와야 합니다.
  • 그런 다음 파일을 선형적으로 검색해야 하며 찾은 경우 BufferedReaders 및 FileReaders를 사용해야 합니다.
    콘텐츠를 읽고 출력 스트림을 사용하여 클라이언트에 보내려면
    그런 파일 .

  • 고객 입장에서 :


  • 연결하려면 서버 소켓과 동일한 포트에서 소켓을 시작해야 합니다.
  • 사용자에게 검색하려는 파일의 이름을 묻고 이를 다음으로 보내야 합니다.
    출력 스트림을 통해 서버.
  • 파일 이름을 서버로 보내려면 출력 스트림을 시작해야 합니다.
  • 그런 다음 서버가 반환하고 표시하는 데이터를 가져오려면 새 데이터 입력 스트림을 시작해야 합니다.
    클라이언트/사용자에게 .
  • 마지막으로 소켓을 닫아야 합니다.

  • 시스템의 흐름





    서버를 작성해 보겠습니다.




    
    import java.io.*;
    import java.net.*;
    public class Server {
      public static void main(String[] args) {
        try {
          ServerSocket ss = new ServerSocket(6666);                     //Creating the Server Socker Instance
          Socket s = ss.accept();                                       //Establishes Connection
          System.out.println("Server is up and running..");
          DataInputStream dis = new DataInputStream(s.getInputStream());  //Get's data from Client
          String  fileName = (String)dis.readUTF();                            //Converting to String
          fileName = fileName + ".txt";
          File folder = new File( "C:/Users/Saumya/Desktop/JavaProject/AllFiles"); //Assingning the location to file object
    
    
          File[] listOfFiles = folder.listFiles();                         //Making the file content list
          DataOutputStream dout = new DataOutputStream(s.getOutputStream());  //Sends data to the Client
          for (File file : listOfFiles) {                                   //Linear Searching the file
            if (fileName.equalsIgnoreCase(file.getName())) {
              System.out.println("Showing it to the Client :" );
              System.out.println();
    
              dout.writeUTF( "File Name : " + fileName );             //Sending the file name
              dout.writeUTF( "Content : "  );
    
              BufferedReader br = new BufferedReader(new FileReader(file));
    
              String st;
              while ((st = br.readLine()) != null) {
    
                dout.writeUTF( st  );                         //Sending the File Content
              }
              return  ;
            }
    
          }
    
          dout.writeUTF(  "Sorry there is no such file !"  ); //If file is no found
    
          dout.flush();
          dout.close();
    
          ss.close();                                    //Shuts down the server
        } catch (Exception e) {System.out.println(e);}
      }
    }
    
    


    클라이언트 측을 작성해 봅시다.




    import java.io.*;
    import java.net.*;
    import java.util.Scanner;
    
    public class  Client {
      public static void main(String[] args) {
        try {
          Socket s = new Socket("localhost", 6666);        //Creating the Socket with the ServerSocket Port
          Scanner sc = new Scanner(System.in);
          DataOutputStream dout = new DataOutputStream(s.getOutputStream());      //Sends the data to the server
          System.out.println("Enter the name of file : ");
          String  fileName =  sc.next();                    //Taking the file name as input
          String notFoundMsg = "Sorry there is no such file !";
          dout.writeUTF(  fileName  );                       //Sending the name to server
    
          DataInputStream dis = new DataInputStream(s.getInputStream());     //Receives data from server
    
          System.out.println();
    
          String  receivedData1 = (String)dis.readUTF();
    
          System.out.println(receivedData1);
          if (receivedData1.equals( notFoundMsg )) {                           //Stopes receiving content if file not found
            s.close();
    
          } else {
            String  receivedData2 = (String)dis.readUTF();
            System.out.println(receivedData2);
            String  receivedData3 = (String)dis.readUTF();
            System.out.println(receivedData3);
          }
    
          dout.flush();
          dout.close();
          System.out.println("Server Stoped ");
          s.close();                                           //Stops the server
        } catch (Exception e) {System.out.println(e);}
      }
    }
    


    어떻게 작동하는지 봅시다



    따라서 더 나은 컨텍스트를 위해 두 개의 명령 프롬프트 셸을 사용하고 있습니다. 하나는 실행 중인 위치server.javaclient.java

    검색된 파일이 존재하는 경우의 시나리오를 살펴보겠습니다.



    서버 스냅:


    클라이언트 스냅:


    검색된 파일이 존재하지 않는 경우의 시나리오를 살펴보겠습니다.



    서버 스냅:


    클라이언트 스냅:



    대박 ! Java를 사용하여 원격 파일 콘텐츠 표시 시스템을 만들었습니다. 🔥🙌

    또한 Future Driven에서 Youtube에 컴퓨터 과학 관련 콘텐츠를 만들고 내 개인 사이트에 블로그를 작성합니다. 🧡✔



    나는 당신이 무언가를 좋아하고 배웠기를 바라며 댓글을 달고 당신의 생각을 알려주세요 .🤞😃

    좋은 웹페이지 즐겨찾기