게임을 시작할 때 자동으로 최신 버전의 게임을 다운로드하는 "패처 런처"를 만들고 있습니다. 그러나 둘 이상의 사람이 동시에 파일을 다운로드하려고 시도하면 모두의 다운로드가 멈추고 중지되며 다른 모든 사람이 다운로드를 종료하고 한 번에 1 개만 다운로드하면 다시 시작됩니다. 누구든지 도울 수 있니? 다음은 URL에서 파일을 다운로드 할 때 사용하는 현재 코드입니다.여러 클라이언트가 다운로드하려고하면 URL에서 파일 다운로드가 중지됩니다.
public void saveUrl(String filename, String urlString)
throws MalformedURLException, IOException {
System.out.println("Downloading " + urlString);
BufferedInputStream in = null;
FileOutputStream fout = null;
int currentdlsize = 0;
int dlsize = new URL(urlString).openConnection().getContentLength();
System.out.println("DL Size " + dlsize);
in = new BufferedInputStream(new URL(urlString).openStream());
fout = new FileOutputStream(filename);
byte data[] = new byte[1024];
int count;
while ((count = in.read(data, 0, 1024)) != -1) {
fout.write(data, 0, count);
currentdlsize += count;
System.out.println("Downloaded " + currentdlsize + "/" + dlsize);
prog.setMaximum(dlsize);
prog.setValue(currentdlsize);
progstat.setText("Downloading at " + currentdlsize + "/" + dlsize);
}
in.close();
fout.close();
System.out.println("Downloaded to " + filename);
}
사용중인 서버 측은 무엇입니까? –
예외가 발생하는 경우이를 알 수 있습니다. 예외를이 호출의 다음 상위 레벨로 던지기 때문에이 메소드에서 알 수 없으며 해당 코드가 예외를 처리하는 방법을 볼 수 없습니다. –
서버쪽에는 별다른 차이가 없습니다. 아파치 파일 서버 일 겁니다. 나는이 분야에서 너무 지식이 없지만 기본적으로 게임 JAR을 내 웹 사이트에 업로드하고 거기에서 패치를 다운로드 받으십시오. 또한 예외가 발생하지 않으며, 다운로드는 모든 사용자에게 '일시 중지'됩니다. 다른 사용자가 응용 프로그램을 종료하고 사용자가 다운로드하는 유일한 사용자 일 때만 다시 시작됩니다. –