UDP works pretty well in Pharo. UDP is also quite simple (being connectionless).
It is quite likely that the high level Pharo code does something wrong. > On 31 Oct 2016, at 18:15, Dimitris Chloupis <kilon.al...@gmail.com> wrote: > > *Conclusion: Problem solved, Pharo bug remains > > I was also informed in Slack that this may be a Mac only problem. > > On Mon, Oct 31, 2016 at 7:13 PM Dimitris Chloupis <kilon.al...@gmail.com> > wrote: > The number does not matter, you are both right and wrong. > > You are correct indeed the string inside the array creates an error by itself > and also contributes to the primitive error of the UDP socket. > > You are wrong for thinking this is the only issue here. What we have here is > a problematic primitive UDP. > > When the string in the array is passed asByteArray , the ByteArray class > complains with an error as it should. > > However when it is passed to the UDP sendData:host:port it does not trigger > the ByteArray error as it should instead it triggers a socket primitive error > which obviously is not a good behaviour, so its Pharo bug. Since the > asByteArray fails the correct error should be displayed and the udp socket > primitive should never trigger. > > You may think that with Primitive error of the UDP socket the data is never > sent and you will be once again wrong. Most of the times the data is indeed > not sent but other times it does . When this happens ? its completely random. > I know this because the SC server gives me a log output with every message > received together with host address and port. > > Finally you are correct to think that if the array is passed as it should > then everything works fine. > > In the end, I decided that the OSCMessage was more than enough for my needs > and seems to handle byteArrays fine and is easier to use. > > Conclusion: Problems, Pharo bug remains. > > As always thanks for the help. > > On Mon, Oct 31, 2016 at 6:58 PM Nicolai Hess <nicolaih...@gmail.com> wrote: > > Am 31.10.2016 5:14 nachm. schrieb "Nicolai Hess" <nicolaih...@gmail.com>: > > > > Hi, > > > > 2016-10-31 12:46 GMT+01:00 Dimitris Chloupis <kilon.al...@gmail.com>: > >> > >> Hey guys I try to use Pharo to use Supercollider via OSC. OSC library is > >> maintained by Stef in STHub. > >> > >> So SC informs that it receives the messages sent, but in Pharo I am > >> getting annoying Primitive errors that I paste bellow. Anyone knows if > >> this a bug or something missing here ? > >> > >> Also SC sometimes it informs me that the message was received in a > >> different port than it was sent. > >> > >> Here the code I am using > >> > >> (OSCMessage for:{'/mixer.volume'. 1 . 0.2})sendTo: '127.0.0.1' port: 57120. > > > > > > > > is the 0.2 a float or should this be read as 0 . 2 . (as two integral > > numbers?). > > {'/mixer.volume'. 1 . 0.2} asByteArray will try to convert every item in > > this array to a byte, so it will create a byte array with four items, but > > it can not convert the string to > > a single byte. > > > > Of course, you can convert a string to a byte array > > > > '/mixer.volume' asByteArray "#[47 109 105 120 101 114 46 118 111 108 117 > > 109 101]" > > > > > > OK, I just saw your call is similar to the other examples, so I think OSC > knows what to do with strings in arrays, so maybe it is indeed the 0.2 that > can not be converted? > > > > > > >> > >> > >> Any help greatly appreciated. > >> > >> Supercollider is an application which is basically a server written in C++ > >> that does music composition and audio synthesis live , its extremely > >> powerful and the top professional audio tool for audio synthesis and music > >> live coding. > >> > >> http://supercollider.github.io > >> > >> Socket(Object)>>primitiveFailed: > >> Socket>>errorSending:startingAt:count:toHost:port: > >> Socket>>primSocket:sendUDPData:toHost:port:startIndex:count: > >> Socket>>sendUDPData:toHost:port: > >> OSCMessage(OSCPacket)>>sendTo:port: > >> UndefinedObject>>DoIt > >> OpalCompiler>>evaluate > >> RubSmalltalkEditor>>evaluate:andDo: > >> RubSmalltalkEditor>>highlightEvaluateAndDo: > >> [ textMorph textArea editor highlightEvaluateAndDo: ann action. > >> textMorph shoutStyler style: textMorph text ] in [ textMorph textArea > >> handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. > >> textMorph shoutStyler style: textMorph text ] ] in > >> GLMMorphicPharoScriptRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: > >> in Block: [ textMorph textArea editor highlightEvaluateAndDo...etc... > >> RubEditingArea(RubAbstractTextArea)>>handleEdit: > >> [ textMorph textArea > >> handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. > >> textMorph shoutStyler style: textMorph text ] ] in > >> GLMMorphicPharoScriptRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: > >> in Block: [ textMorph textArea... > >> WorldState>>runStepMethodsIn: > >> WorldMorph>>runStepMethods > >> WorldState>>doOneCycleNowFor: > >> WorldState>>doOneCycleFor: > >> WorldMorph>>doOneCycle > >> [ [ World doOneCycle. > >> Processor yield. > >> false ] whileFalse: [ ] ] in MorphicUIManager>>spawnNewProcess in Block: > >> [ [ World doOneCycle.... > >> [ self value. > >> Processor terminateActive ] in BlockClosure>>newProcess in Block: [ self > >> value.... > >> > > >