Ik ben momenteel bezig met een applicatie voor Android. Hierbij moet er via UDP een commando gestuurd worden. Dat commando komt voort uit het OSC protocol, en zal dus omgeleid worden naar een OSC-compatible DAW. Met behulp van de tool KonkreetPerformer kan ik zien wat er gebeurt op die UDP poort, en de commando's komen wel aan, maar blijkbaar zijn ze in het onjuiste formaat, waardoor hij ze weigert.
Het desbetreffende stuk code ziet er als volgt uit:
De tool die de UDP berichten logt en het probeert om te zetten naar OSC, geeft hierbij echter als error:
OSC Bad message Name String: DataAfterAlignedString: Unreasonably long string Dropping entire message
Die byte array van buf heb ik laten outputten naar logcat, zodat ik kan zien wat de waarde op dat moment was. Dat gaf als resultaat: [B@40517450
Die waarde leek me iets te kort, omdat er naar mijn weten 2 tekens (als in 0xFF) worden gebruikt per character, en dus leek het me vreemd dat de byte array hier kleiner uitvalt dan de oorspronkelijke string. Ik heb geprobeerd om een andere charset te kiezen bij het getBytes gedeelte, maar UTF-8 of ASCII gaven eveneens deze aparte resultaten (niet exact dezelfde output in de logcat, maar het grootste deel was gelijk).
Er gaat dus volgens mij iets mis bij deze conversie, en wat zoekwerk gaf niet veel resultaten. Heeft iemand misschien een idee waarom deze conversie naar een byte array verkeerd gaat, en wat ik er aan kan doen?
Het desbetreffende stuk code ziet er als volgt uit:
code:
1
2
3
4
5
| byte[] buf = ("/live/clip/view 1, 1").getBytes(); /* Create UDP-packet with * data & destination(url+port) */ DatagramPacket packet = new DatagramPacket(buf, buf.length, serverAddr, 9003); |
De tool die de UDP berichten logt en het probeert om te zetten naar OSC, geeft hierbij echter als error:
OSC Bad message Name String: DataAfterAlignedString: Unreasonably long string Dropping entire message
Die byte array van buf heb ik laten outputten naar logcat, zodat ik kan zien wat de waarde op dat moment was. Dat gaf als resultaat: [B@40517450
Die waarde leek me iets te kort, omdat er naar mijn weten 2 tekens (als in 0xFF) worden gebruikt per character, en dus leek het me vreemd dat de byte array hier kleiner uitvalt dan de oorspronkelijke string. Ik heb geprobeerd om een andere charset te kiezen bij het getBytes gedeelte, maar UTF-8 of ASCII gaven eveneens deze aparte resultaten (niet exact dezelfde output in de logcat, maar het grootste deel was gelijk).
Er gaat dus volgens mij iets mis bij deze conversie, en wat zoekwerk gaf niet veel resultaten. Heeft iemand misschien een idee waarom deze conversie naar een byte array verkeerd gaat, en wat ik er aan kan doen?