Har byggt en simpel chatt i Java, men det saknas alltid tre tecken.

Permalänk
Medlem

Har byggt en simpel chatt i Java, men det saknas alltid tre tecken.

Då det är mycket kod tar jag mig friheten att lägga upp den här:
Start klass som startar 2 klienter och en server: http://codepaste.net/ukcauu
Klassen för klienter: http://codepaste.net/2zyxjs
Klassen för servern: http://codepaste.net/2kbono

Applikationen funkar hyfsat, finns givetvis en del kvar att göra, men det finns en bugg jag inte förstår mig på. När jag skickat något att skriva ut så saknas alltid de tre sista teckna. Om jag skickar t ex "Jag äter ett päron" då visas bara "Jag äter ett pär". Har grubblat och testat fram och tillbaka men lyckas inte hitta varför detta händer. Blir även en liknande situation när jag skriver in 1 tecken, då syns ingenting alls.

EDIT: Efter ännu fler tester verkar det vara fler tecken som försvinner ju mer text jag matar in.

Permalänk
Medlem
Skrivet av Baxtex:

Då det är mycket kod tar jag mig friheten att lägga upp den här:
Start klass som startar 2 klienter och en server: http://codepaste.net/ukcauu
Klassen för klienter: http://codepaste.net/2zyxjs
Klassen för servern: http://codepaste.net/2kbono

Applikationen funkar hyfsat, finns givetvis en del kvar att göra, men det finns en bugg jag inte förstår mig på. När jag skickat något att skriva ut så saknas alltid de tre sista teckna. Om jag skickar t ex "Jag äter ett päron" då visas bara "Jag äter ett pär". Har grubblat och testat fram och tillbaka men lyckas inte hitta varför detta händer. Blir även en liknande situation när jag skriver in 1 tecken, då syns ingenting alls.

EDIT: Efter ännu fler tester verkar det vara fler tecken som försvinner ju mer text jag matar in.

Försvinner det något även om du bara skriver in bokstäver mellan A-Z?

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Försvinner det något även om du bara skriver in bokstäver mellan A-Z?

Japp.

Testade sätta ut några printlns nu, både när jag skickar paketet från klienten, när servern skickar tillbaka och när klienten motager paketet.

I de 2 första fallen verkar allt vara med, alla tecken finns med. Men i det sista fallet när klienten motager paketet och ska skriva ut det, då fattas det minsann tecken. Så det borde väl vara något här som händer, dvs i ListenerThread klassen som ligger i UDPClient. Spontant känns det som att det är något fel med packet.getLength(), att den på något vis inte får med allt. Men vad vet jag, är helt grön på nätverksprogrammering än så länge.

Permalänk
Medlem

Hur fungerar det om du istället för message.length använder byte-array:ens längd i UPDServer.run när du ska skicka ut till klienterna? En char kan vara längre än en byte beroende på encoding.

Permalänk
Medlem
Skrivet av Fooesque:

Hur fungerar det om du istället för message.length använder byte-array:ens längd i UPDServer.run när du ska skicka ut till klienterna? En char kan vara längre än en byte beroende på encoding.

Använde packet.getLength() istället och det verkar ha löst det, tack!
Det låter logiskt. Jag trodde att en char==byte, men googlade nu och precis som du säger varierer det med vilken teckenkodning det gäller.

Permalänk
Medlem

Kan det bli flera paket som ska tas emot i ett meddelande eller är det alltid så att allting är samlat i samma paket? Tänker om du skriver ut första paketet men missar nästkommande på något sätt. Hur vet man när det inkommande meddelandet är slut? Eller sköts detta automatiskt av någon inbyggd klass som anropas i java?

Har inte kollat koden så noga och är inte bra på java heller. Var bara en spontan fundering som jag fick.

Edit: Sent svar, ni hade löst det ser jag.

Permalänk
Medlem

@Baxtex: Gutt! Lycka till med nätverksprogrammeringen