T
TheSunToucher
Gast
Hallo,
ich hab ein kleines Problem beim absetzen von Queries auf die freedb.
Wer's nicht kennt:
über die freedb kann man informationen über ein album abfragen, also Albumname, Tracks, Erscheinungsjahr usw. dafür benutzt man das cddb-Protokoll. Infos unter: freedb.org
Jetzt zu meinem Problem:
Erstmal habe ich eine Simple anfrage über telnet ausprobiert, lief einwandfrei.
Wenn ich das ganze aber in einer Java-Klasse über einen Socket
versuche funktionierts nicht!
Das Problem ist, das er nie aus der for-Schleife kommt, also sie läuft nicht endlos, sondern einmal, gibt dann die erste Antwort aus (Welcome... siehe telnet) versucht die nächste Line zu lesen und bleibt da stehen.
Ich verstehe nicht warum. Ich hatte auch versucht den output nach jedem input abzuholen, gleiches Ergebnis! Als "termination"-Symbol ist '.' angegeben, ist das das Problem? Darif ich immer nur bis zum ersten Punkt lesen?
Ich bin für jede Hilfe dankbar,
gruß
TheSunToucher
ich hab ein kleines Problem beim absetzen von Queries auf die freedb.
Wer's nicht kennt:
über die freedb kann man informationen über ein album abfragen, also Albumname, Tracks, Erscheinungsjahr usw. dafür benutzt man das cddb-Protokoll. Infos unter: freedb.org
Jetzt zu meinem Problem:
Erstmal habe ich eine Simple anfrage über telnet ausprobiert, lief einwandfrei.
Code:
-> telnet freedb.freedb.org 8880
< 201 zaphod CDDBP server v1.5.1PL0 ready at Sat Nov 13 14:01:28 2004
-> cddb hello username hostname clientname version
< 200 Hello and welcome username@hostname running clientname version.
->cddb lscat
<210 OK, category list follows (until terminating `.')
<data
<folk
<jazz
<misc
<rock
<country
<blues
<newage
<reggae
<classical
<soundtrack
<.
Wenn ich das ganze aber in einer Java-Klasse über einen Socket
versuche funktionierts nicht!
Code:
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
public class Freedb {
/**
* @throws IOException
*
*/
public Freedb() throws IOException {
InetAddress addr = InetAddress.getByName("freedb.freedb.org");
int port = 8880;
Socket socket = new Socket(addr, port);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
out.write("cddb hello username hostname clientname version");
out.write("cddb lscat");
out.flush();
[COLOR=red]for (String line; (line = in.readLine()) != null; ) {
System.out.println(line);
}[/COLOR]
in.close();
out.close();
socket.close();
}
/**
* For Tests only
* @param args
*/
public static void main(String[] args) {
try {
new Freedb();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Das Problem ist, das er nie aus der for-Schleife kommt, also sie läuft nicht endlos, sondern einmal, gibt dann die erste Antwort aus (Welcome... siehe telnet) versucht die nächste Line zu lesen und bleibt da stehen.
Ich verstehe nicht warum. Ich hatte auch versucht den output nach jedem input abzuholen, gleiches Ergebnis! Als "termination"-Symbol ist '.' angegeben, ist das das Problem? Darif ich immer nur bis zum ersten Punkt lesen?
Ich bin für jede Hilfe dankbar,
gruß
TheSunToucher