Simpelt Java TCP problem
Hejsan, jag har en enkel flertrådad chatklient som ansluter till en simpel multiuser server.
Jag är dock inte säker på det bästa sättet att hantera listen trådarna, jag använder just nu en
PrintWriter out = new PrintWriter(skt.getOutputStream(), true); som output, och en
BufferedReader in = new BufferedReader(new InputStreamReader(skt.getInputStream())); som input
(Jag vet inte om detta är det bästa sättet att hantera input/output över TCP, då jag inte programmerat i Java särskilt länge.
Problemet ligger i hur input måste läsas, alla exempel jag hittat använder sig av kod i stil med:
while (!in.ready()) { }
för att se till att input alltid finns där ( detta äter dock CPU) och fungerar inte ordentligt heller.
jag har gjort mer avancerade TCP klienter av olika slag i VB och C#, men där väntar streamReaders "automatiskt" tills det finns input, och skapar då inte detta problem.
I mitt fall har jag en tråd i min main klass som körs från det att klienten har anslutit till server tills dess att programmet stängs av, denna tråd kallar en funktion i min TCP klass som ska returnera data som finns att läsa ( String s = TCP.readStream();).
I slutändan ger detta mig väldigt konstig output, while (!in.ready()) { } ser visserligen till att det finns en sträng att läsa (tror jag) , men, det returneras aldrig något till tråden i main klassen, inte heller i debug kod som ligger direkt i funktionen, jag har lyckats få detta att funka på en enkel klient som skickar ett meddelande till en echo server.
Om koden här är otillräcklig är det bara att be om fler exempel.
Tack i förväg /Eaan