Toon posts:

[Java] Socketserver .equals probleem

Pagina: 1
Acties:
  • 203 views

  • ClickTwice
  • Registratie: augustus 2008
  • Laatst online: 24-09 14:59
Ik heb een java multithreaded socket server opgezet en gebruik een flash client om er mee te communiceren.

Probleem: De flash client verbind met de socket server, en wanneer een event gebeurd stuurt hij een test string 'Test'. De eerste maal dat de client deze test string stuurt reageerd de server erop met 'ok', echter wanneer de client een tweede maal 'Test' stuurt komt deze boodschap wel aan bij de socket server maar reageerd hij niet meer.

Java code:
Java:
1
2
3
4
5
6
7
8
9
while((line = in.readLine()) != null && !line.equals(".")) {
            System.out.println("Incomming: " + line);
            if(line.equals("quit")){
                break;
            }else if (line.equals("Test")){
                out.println("Ok");
                System.out.println("Outgoing: Ok");
            }
        }


As code:
code:
1
2
3
4
5
if (Key.isDown(key.UP)) {
        
        server.send('Test' + '\n');
        trace('send');
}

  • RobIII
  • Registratie: december 2001
  • Laatst online: 21:50

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

En heb je al eens gedebugged? (Debuggen: Hoe doe ik dat?).

Als de equals test niet lukt is er dus iets in line aanwezig waardoor de equals niet waar is. En dus zou je eens moeten beginnen met alles te dumpen wat je binnen krijgt. Dat doe je nu op regel 2, maar zie jij whitespace e.d. (of een \n die teveel/te weinig binnenkomt) wel?

Doe eens zoiets:
Java:
1
System.out.println("Incomming: [" + line + "]");

En als je er daar niet mee komt: dump de line en vervolgens van de eerste tot de laatste char in line ook nog eens de ASCII code.

[Voor 26% gewijzigd door RobIII op 15-10-2010 18:54]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • ClickTwice
  • Registratie: augustus 2008
  • Laatst online: 24-09 14:59
Resultaat van : System.out.println("Incomming: [" + line + "]");
code:
1
2
3
Incomming: [T]
Outgoing: 25_25
Incomming: [T]


Geen spaties, ben even uitzoeken hoe dat ik moet dumpen, post zometeen het resultaat

[Voor 29% gewijzigd door ClickTwice op 15-10-2010 19:01]


  • RobIII
  • Registratie: december 2001
  • Laatst online: 21:50

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

En wat leid je daar zelf uit af?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • ClickTwice
  • Registratie: augustus 2008
  • Laatst online: 24-09 14:59
Sorry foutje, had de string even veranderd naar T maar in geval van Test geeft die Test bij incomming en Ok bij outgoing.

Heb even charAt(4) gebruikt en dit resulteert in een fout:
Incomming: [Test]
Exception in thread "Thread-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 4

Dus lijkt me dat er geen characters meer achter de string staan.

[EDIT]
Heb de fout:
Java:
1
2
3
4
5
System.out.println("Incomming: [" + line + "]");
            System.out.println(line.charAt(0));
            System.out.println(line.charAt(1));
            System.out.println(line.charAt(2));
            System.out.println(line.charAt(3));


Console:
Incomming: [Test]
T
e
s
t
Outgoing: 25_25
Incomming: [Test]

[Voor 37% gewijzigd door ClickTwice op 15-10-2010 19:15]


  • ClickTwice
  • Registratie: augustus 2008
  • Laatst online: 24-09 14:59
Sorry voor dubbel post, edit van bovenstaande post weergaf niet mijn volledige aanpassing...

Er staat dus een spatie voor de tweede 'test' string, echter hoe komt de daar? Ik heb die toch helemaal niet verzonden in de flash client....

[Voor 109% gewijzigd door ClickTwice op 15-10-2010 19:18]


  • RobIII
  • Registratie: december 2001
  • Laatst online: 21:50

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Ik zie even niet waarom je niet gewoon met een for-loopje van char 0 tot de lengte van de string dumpt i.p.v. met hardcoded charAt's. Als er iets op plek 5 had gestaan had je 't nu nog niet gezien :?

Verder zeg je wel "heb de fout" maar ik zie nu in je "console dump" dat de input is zoals je verwacht(te)? Dus wat was de fout dan :?
dewmath schreef op vrijdag 15 oktober 2010 @ 19:17:
Er staat dus een spatie voor de tweede 'test' string, echter hoe komt de daar? Ik heb die toch helemaal niet verzonden in de flash client....
Is het een spatie (dus charcode 32 (20 hex))? Of is het een newline? ;) Daarom zei ik: druk de ASCII codes af.

Let je ook even op topickick binnen 24 uur. Gebruik de edit knop ( http://tweakimg.net/g/forum/images/icons/edit.gif ) als je iets toe te voegen hebt; je topic herhaaldelijk omhoogschoppen is niet nodig.

[Voor 56% gewijzigd door RobIII op 15-10-2010 19:20]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • ClickTwice
  • Registratie: augustus 2008
  • Laatst online: 24-09 14:59
Ik vermoed dat de fout die spatie is die voor de tweede verzonden string verschijnt echter bij het println van die string tussen brakkets is er niets te zien van die spatie...

Ascii resultaat:

Eerste send: character 0: 84
Tweede send: character 0: 0

Dus dat is een 'NUL' en geen spatie, alsnog waar kan die vandaan komen?

[Voor 30% gewijzigd door ClickTwice op 15-10-2010 19:25]


  • RobIII
  • Registratie: december 2001
  • Laatst online: 21:50

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

dewmath schreef op vrijdag 15 oktober 2010 @ 19:19:
Ik vermoed dat de fout die spatie is die voor de tweede verzonden string verschijnt echter bij het println van die string tussen brakkets is er niets te zien van die spatie...
Dan is het dus geen spatie... Nogmaals: druk de ASCII codes af.

Java:
1
2
for (int i=0;i<line.length;i++)
  System.out.println((int)line.charAt(i));

Zoiets.

[Voor 18% gewijzigd door RobIII op 15-10-2010 19:23]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • ClickTwice
  • Registratie: augustus 2008
  • Laatst online: 24-09 14:59
Incomming: [Test]
84
101
115
116
Outgoing: 25_25
Incomming: [Test]
0
84
101
115
116

[Voor 17% gewijzigd door ClickTwice op 15-10-2010 19:27]


  • RobIII
  • Registratie: december 2001
  • Laatst online: 21:50

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

dewmath schreef op vrijdag 15 oktober 2010 @ 19:27:
Incomming: [Test]
84
101
115
116
Outgoing: 25_25
Incomming: [
http://www.asciitable.com/
Ik denk dat we nu wel klaar zijn met handjes vasthouden. Je doet nu niets anders dan zaken dumpen zonder zelf verder te kijken; we verwachten hier op GoT wel (heel) wat meer eigen inzet.

/edit: Een halve dump hier posten en dan met een edit aanvullen is ook niet echt handig :X Doe dat dan even in 1 copy/paste actie...

[Voor 35% gewijzigd door RobIII op 15-10-2010 19:30]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij

Pagina: 1

Dit topic is gesloten.



Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee