On 04/08/2011 04:49 PM, Benoît Minisini wrote: >> Kevin Fishburne wrote: >> >> Ahh, I understand a little better. I don't know much about endianness, >> so please excuse my ignorance here. >> >> ... >> >> While it would be slow, I could just write functions for flipping the >> byte order of characters in a string. That would work fine for the >> client but may impact performance server side. I'll do some >> experimenting tomorrow to see what I can come up with. > > Wikipedia is your friend, Kevin. > > http://en.wikipedia.org/wiki/Endianness
Believe it or not I actually read that exact article. It should have just said, "Endianness describes the order of the bytes comprising a variable stored in memory, file or a network stream," and I would have understood, but unfortunately the article was a mile long. Their mention of how rare "bit endianness" was should have given me a clue, though. I'd always assume it was bit order, not byte order. > And UTF-8 strings used by Gambas are not endianness-dependent. > > Anyway, I'm almost sure that you can decode messages with READ while you > receive them, and store the decoded data in an array, or a collection (the > data is then indexed by name, easier but slower), and then process them later > as you wanted. I will file this away for possible use later. Right now I'm in the stage of "just getting things working", but later when I'm doing stress testing and optimization I'll be in the "get shit working as fast as possible" phase and may need to rework the transaction processing code. The good news is that I did finally get it working. It turns out the packet payload is NOT reversed, only the individual values. I created this function to reverse the bytes for each value in the string when necessary: Public Function Reverse(data As String) As String ' Reverse the order of the passed bytes. ' General declarations. Dim counter As Byte ' Generic counter. Dim length As Byte ' Length of the passed string. Dim reversed As String ' The reversed string. ' Reverse the string length = Len(data) For counter = length To 1 Step -1 reversed = reversed & Mid$(data, counter, 1) Next ' Return the reversed value. Return reversed End All the transactions are now processed properly, while their payload is still stored as a string in an array. Of course calling this function slows things down a bit, but I won't know the full implications of this until hundreds of players are connected simultaneously. Hopefully it won't be too slow. -- Kevin Fishburne Eight Virtues www: http://sales.eightvirtues.com e-mail: sa...@eightvirtues.com phone: (770) 853-6271 ------------------------------------------------------------------------------ Xperia(TM) PLAY It's a major breakthrough. An authentic gaming smartphone on the nation's most reliable network. And it wants your games. http://p.sf.net/sfu/verizon-sfdev _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user