Toon posts:

[java] probleem bij connecten met gnutella peer.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

ik zit een beetje te klooien om verbinding te maken met het Gnutella netwerk via Java. Op internet heb ik de documentatie opgezocht en zoals daaruit blijkt is een simpele verbinding maken heel eenvoudig.
Zier hier voor de docs....

Het komt er dus op neer dat je een:
GNUTELLA CONNECT/0.4\n\n
moet sturen naar een Gnutella servent om een verbinding te maken. Daarna kun je een:
GNUTELLA OK\n\n
terug verwachten en begint het echte werk.

Maar natuurlijk werkt dit bij mij niet :(
Ik krijg geen antwoord terug van de servent (peer).

In grote lijnen doe ik het volgende:

//De handshake string
String connect = "GNUTELLA CONNECT/0.4\n\n";

//Maak een outputstream die de text verzendt als ASCII. (peer is de socket)
OutputStreamWriter out = new OutputStreamWriter(peer.getOutputStream(),"US-ASCII");

//Een buffered reader om het antwoord uit te lezen.
BufferedReader in = new BufferedReader(new InputStreamReader(peer.getInputStream()));

//Nadat de socket is verbonden met de servent kan de handshake worden gedaan.
out.write(connect);

//Draai een thread met while loop waarin alle berichten van de servent kunnen worden ontvangen.
input = in.readLine();

Ondanks mijn sublieme programmeer-skillz werkt t toch niet! ;)
Ik heb het vermoeden dat de ontvangende partij de handshake string niet goed als ASCII ontvangt, en daarom geen antwoord geeft.
Iemand suggesties? Thanx

Verwijderd

Flush je output eens :)

out.flush(); (na je write)

Verwijderd

Topicstarter
(Waartoe dient dat flushen eigenlijk precies? Dan maak je toch slechts de outputbuffer leeg?)

Ik heb even geprobeerd om bij het ontvangen niet een readLine() te doen, maar enkele characters te lezen met read(). Blijkbaar is mijn code om te verzenden wel goed, want nu krijg ik wel antwoord.

Het probleem was dus dat een readLine() niet werkt op de input. Nu bedenk ik mij dat dat best eens kan komen doordat mijn BufferedReader Unicode denkt te ontvangen en daardoor de newlines niet herkent....

Eindelijk :)

(heb trouwens heel vaak dat ik tot de oplossing kom zodra ik de vraag op een forum post)
Blijkbaar geldt nog altijd: "de vraag stellen is m beantwoorden"
8)7

[ Voor 68% gewijzigd door Verwijderd op 01-03-2006 23:50 ]