2010-01-09 6 views
0

확인 어디서부터 시작해야할지 모르는 파일 공유 응용 프로그램과 관련하여 많은 질문이 있습니다. 내 Java 지식은 매우 제한되어 있으며 사용자가 제공하는 모든 도움에 만족할 것입니다.java 파일 공유 응용 프로그램, 사용자 로깅

여기에 질문이 왔습니다.

첫째,이 같은 종류의 볼 필요가있는 사용자 로그인 방법에 노력하고있어 :

import java.io.File; 
import java.util.ArrayList; 


public class User { 

    String username; 
    String IPAdresa; 

    public User(String username, String IPAdresa) { 

     this.username = username.toLowerCase(); 
     this.IPAdresa = IPAdresa; 

    } 

    public void fileList() { 

     ArrayList<String> list = new ArrayList<String>(); 

     File folder = new File("C:\\userfolder"); 

      File[] files = folder.listFiles(); 

      for (int i = 0; i < files.length; i++) { 

       list.add(i, files[i].toString()); 

      } 

    } 
} 

당신은 내가 같은 사용자 이름과하여 IPAddress 같은 사용자에 대한 매개 변수를 포함 사용자 클래스가 볼 수 있듯이 특정 폴더의 파일을 나열하고 해당 파일 이름을 포함하는 arraylist를 문자열로 생성하는 fileList 메소드를 제공합니다.

다음으로해야 할 일은 클라이언트/사용자에게 검색 기능을 제공하는 클래스 또는 메소드를 만드는 것입니다. 예를 들어 사용자가 응용 프로그램에 로그온하면 특정 파일을 검색하고 공유 폴더의 파일 목록을 다른 사용자에게 제공합니다. 내 멘토를 이해하는 방식으로, Request 클래스는 사용자 내에서 각 파일 목록을 검색 할 수있는 각 루프를 포함해야합니다. 나는 그걸 어떻게 풀어 낼지 잘 모르겠다. 그리고 배열리스트 작업에 관해서는 많은 문제가있다.

은 약처럼 보이도록 해야하는 방법 : (지금까지이 일에 대한 의사 코드의 종류를 사용하고 있습니다)

public class RequestForFile { 

    ArrayList list = new ArrayList(); 
    User user = new User("Slavisha","123.23.34.45"); 

    public RequestForFile() { 
     list.add(user); 
      foreach (User user in userlist) { 
       foreach (String str in User.fileList()) { 
        if (str == request) 
        ... 
       } 
      } 

    } 

} 

다음 질문 : 어떻게 사용자가 Java 응용 프로그램에 로그인 할 수 있습니까? 나는 하루 종일 그것에 대해 생각해 왔고 그 주위를 돌아 다니려고 노력했지만 실패했습니다. 나는 GUI/스윙을 아직 가지고 있지 않다. 결국 그것을 할 수 있기를 바란다.

Client, Server 및 HandleClient를 나타내는 클래스가 3 개 더 있습니다.

나는 어떤 기여도 환영한다고 말했다. 나는 확실히 더 많은 질문으로 돌아갈 것이다. 감사합니다.

답변

0

한 가지 질문에 너무 많은 질문을하고 있습니다. 한 가지 질문은 RequestForFile 객체가 처리하는 사용자를 어떻게 알 수 있는지에 관한 것입니다. 그것이 로그인 질문입니다. 그걸 별도로 제기 할 것을 제안하십시오.

우리가 물어 보는 그 ipaddress에 Slavisha라는 것을 알고 있다고 가정 해 봅시다. 여기에 몇 가지 문제가 있습니다 :

1). 무엇을 요구하고 있습니까? RequestForFile()은 어떤 파일이 요청되는지를 알려주는 매개 변수를 취하지 않습니다. RequestForFile()의 resposbility는 무엇입니까? 하나의 요청을 나타내는 것으로 가정됩니까? 실제로 파일을 찾는 책임은 있습니까? 돌려 주겠다고?

2). User.fileList() 메서드는 실제로 아무 것도 유용하지 않습니다. 그것은 아무것도 반환하지 않으므로 완료시 모든 것을 잃어버린 것으로 생각했습니다.

3). 어쨌든, 모든 사용자가 같은 폴더에서 찾고있는 것처럼 보입니다. "C : \ userfolder"는 각 사용자마다 별도의 디렉토리를 만들려고 했습니까?

4). 리스트를 살펴보면 아마도 효율적이지 않을 것입니다. 세트와 맵에 대해 읽어야합니다.

꽤 재 설계가 필요하다고 생각합니다. 사용자 클래스는 "이 사용자는 해당 파일을 가지고 있습니까?"와 같은 질문에 대답해야합니다. REquest 클래스는 특정 사용자를 식별하고 파일을 요청해야합니다. 어떻게 클라이언트에서 서버로 파일을 전송할 것인지 명확하지 않습니다.

초기 교육용으로 Client/Server 프로그래밍을하는 것은 상당히 야심적입니다.

+0

RequestForFile() 메서드 내가 완전하게 완료하는 방법을 설명 할 수는 있지만, 불완전하다는 것을 알려 주셨습니다. 내가 충분히 자신을 분명히하지 않았기 때문입니다. 나는 이번에 더 정확하게하려고 노력할 것이다. RequestForFile() 및 User 클래스에 대한 새로운 코드가 있습니다. 3) 모든 사용자는 자신의 shareFolder를 가지고 있어야합니다. 그 문제를 나중에 다루 겠지만, 큰 문제는 아닌 것 같습니다. 4) 집합과지도에 대해 모르겠지만, 어쨌든 내 선택이 아닌 ArrayLists를 사용해야한다는 것을 확실히 알고 있습니다. ( – AmateurProgrammer

+0

꽤 야심 찬 것이지만이 과제는 필연적입니다. 나는 이것을 끝내야합니다. 며칠 후에 밤새 깨어 있어야만했습니다. 감사합니다. 도움이되었습니다. 비슷한 문제에 관한 다음 질문에서 도와 주시면 감사하겠습니다. – AmateurProgrammer

0

'로그인'으로 무엇을 의미하는지 잘 모르겠습니다. 당신은 현재 응용 프로그램을 실행하는 사용자의 사용자 이름을 제공

System.getProperty("user.name"); 

: (내가 믿는대로)를 사용, Java 응용 프로그램에 사용자를 식별 하십시오.

0

GUI는 사용자에게 명령 행 이외의 것을 보여주기 위해 사용되지만 Swing 또는 AWT는 서버와 클라이언트를 연결하는 것처럼 보이는 기능을 제공하지 않으므로 사용자가 서버의 실행중인 인스턴스에 로그인하십시오. GUI는이 프로세스를보다 사용자에게 익숙하게 만들지 만 근본적으로 소켓을 사용하여 클라이언트가 서버 (알려진 IP 주소와 연결을위한 열린 포트 세트)에 연결하도록하는 것, 사용자의 정보 (이름 공유 된 파일의 수)를 입력 한 다음 서버에서 가능한 모든 공유 파일의 목록을 수신합니다. 그러면 클라이언트는이 목록을 통해 로컬로 검색 할 수 있습니다.

다른 방법으로이 작업을 수행 할 수 있습니다. 서버는 클라이언트로부터 요청을 받고, 검색을 수행하고, 클라이언트에 결과를 보냅니다. 대부분의 작업 부하를 배치 할 위치에 따라 다릅니다. 어느 쪽이든, 당신은 소켓 연결을 통해 Strings를 보내는 것에 대해 이야기하고 있습니다. 적어도 파일 이름 목록을보고 실제로 한 클라이언트에서 다른 클라이언트로 파일을 전송할 때까지.

다른 컴퓨터에있는 두 개의 서로 다른 프로그램이 어떻게 정보를 서로 보낼 수 있는지 알아 보려면 a tutorial on sockets을보고 싶을 것입니다.

+0

나는 이제 클라이언트가 사용자와 동등하다는 것을 깨달았고, GUI가 로그인의 느낌을 위해서만 존재한다는 것을 알았습니다. 실제 연결은 소켓을 사용하여 만들어졌습니다. 나는 Server 클래스와 Client 클래스가 잘되어 있다고 생각한다. 나는 RequestForFile과 User 클래스를 고정 시켰고 곧 또 다른 질문을 할 것이다. – AmateurProgrammer