M
MiDniGG
Gast
Hi,
bin grad dabei meinen HFS ma etwas weiterzumachen. Dabei bin ich auf folgendes Problem gestoßen:
Erst mal geb ich auf ner HTML-Seite alle "freien" Daten an. Mit klick auf einen der Links kann man die Datei dann runterladen. Gelesen und Geschrieben wird alles über Input / OutputStreams.
Das läuft alles ganz schön ohne Problem. Jedoch, wenn die Datei zu "groß" ist (also mit 500 KB kam der Fehler) wird der InputStream, sowie der Socket geschlossen, bevor die Datei fertig geladen ist. Somit muss man bei ner Datei von 500 KB ca 10 mal F5 drücken bis mal was passiert... Und das ist nicht toll ^^
Hier noch n bisschen Code:
So. Falls einer ne Idee hat. Nur raus damit. Falls ich irgendwelchen Blödsinn in der Erläuterung geschrieben hab. Sorry! Frag einfach nomma nach
cya
bin grad dabei meinen HFS ma etwas weiterzumachen. Dabei bin ich auf folgendes Problem gestoßen:
Erst mal geb ich auf ner HTML-Seite alle "freien" Daten an. Mit klick auf einen der Links kann man die Datei dann runterladen. Gelesen und Geschrieben wird alles über Input / OutputStreams.
Das läuft alles ganz schön ohne Problem. Jedoch, wenn die Datei zu "groß" ist (also mit 500 KB kam der Fehler) wird der InputStream, sowie der Socket geschlossen, bevor die Datei fertig geladen ist. Somit muss man bei ner Datei von 500 KB ca 10 mal F5 drücken bis mal was passiert... Und das ist nicht toll ^^
Hier noch n bisschen Code:
Code:
new Thread(new Runnable()
{
public void run()
{
try
{
dsl = new DataSourceList();
dsl.load(new File("C:/properties.prop"));
ss = new ServerSocket(port);
while(true)
{
try
{
final Socket so = ss.accept();
new Thread(new Runnable()
{
public void run()
{
try
{
byte[] bytes = null;
String request = null;
InputStream is = so.getInputStream();
int ch = 0;
StringBuffer buffy = new StringBuffer();
while (buffy.length() < 3 || !buffy.substring(buffy.length() - 3, buffy.length()).trim().isEmpty())
{
ch = is.read();
buffy.append((char)ch);
}
request = buffy.substring(buffy.indexOf("GET ") + 4, buffy.indexOf(" ", buffy.indexOf("GET ") + 4)).replaceAll("%20", " ");
DataSource ds = dsl.getDataSourceByRequest(request);
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(ds.getFile()));
bytes = new byte[(int)ds.getFile().length()];
bis.read(bytes);
answer(so, bytes, ds.getMime(), ds.getFile());
bis.close();
// is.close();
// so.close();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
}).start();
}
catch(FileNotFoundException fnfe)
{
fnfe.printStackTrace();
}
catch(SocketException se)
{
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
}
catch(FileNotFoundException fnfe)
{
fnfe.printStackTrace();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
}).start();
So. Falls einer ne Idee hat. Nur raus damit. Falls ich irgendwelchen Blödsinn in der Erläuterung geschrieben hab. Sorry! Frag einfach nomma nach
cya