After working with C# program sending/receiving information via multicast udp datagrams I had the wish to be able to receive and send datagrams also via Smalltalk.
I published a source code package at MSKUDPMulticast, where code for receiving and sending is included.
The source is – at this time – only running under Windows, due to some specific Windows values.
| recInstance sndInstance helloGroup localAddress anError | "we define the local interfaces, where we want to hear/send" localAddress := INADDRANY asMSKSciSocketAddress. localAddress port: 21342. "we define the multicast group - our group home" helloGroup := '224.0.0.1' asMSKSciSocketAddress. helloGroup port: 21342. recInstance := MSKMulticastReceiver newWithInterfaceAddress: localAddress. "binding the receiving socket" (anError := recInstance bindReceivingSocket) isSciError ifTrue:[ recInstance close. ^Transcript cr ; show: 'Error creating instance ' ]. "we invite the receiver to our group" recInstance addMulticastMembershipFor: helloGroup; "what do we do with receiving datagrams" forEachDatagramExecute: [ :receiver :byteArray :size | Transcript cr ; show: (byteArray asMSKStringWithSize: size) ] withReceiver: recInstance ; "and start the work" startWork. "now the sender part" sndInstance := MSKMulticastSender newWithGroupAddress: helloGroup. (anError := sndInstance connect) isSciError ifTrue:[ sndInstance close. recInstance close. ^Transcript cr ; show: 'Error creating instance ' ]. sndInstance startWork. "now we open two inspectors - that you can work with these instances. to finish this example, just send 'close' to both instances" recInstance inspect. sndInstance inspect.