Hi,
El 28-02-2017, a las 14:27, Benoit St-Jean via Pharo-users <pharo-users@lists.pharo.org> escribió:
De: Benoit St-Jean <bstjean@yahoo.com> Asunto: Socket, network, testing and coding Fecha: 28 de febrero de 2017, 14:27:58 CLST Para: Any question about pharo is welcome <pharo-users@lists.pharo.org> Responder a: Benoit St-Jean <bstjean@yahoo.com>
Hi guys,
Quick question regarding sockets and testing.
I'm trying to implement a simple communication protocol to exchange data (strings) between 2 images and I was wondering what was the easiest way to test/develop my code? I want to be able to do something similar to a chat client between 2 images where none of those 2 images acts as a server. So data can originate from any of those 2 images and both images have to "listen" to each other. Besides, both images would have to transmit/receive on the same port.
1) Is this possible (the way I want to do/test it)?
Yes, you can test it.
2) How do I simulate something like this on a *single* machine running those 2 images?
Something like this: | listener clientSocket serverSocket | listener := Socket newTCP. [ listener listenOn: 0 backlogSize: 4. clientSocket := Socket newTCP. clientSocket connectTo: #[127 0 0 1] port: listener localPort. clientSocket waitForConnectionFor: 1. serverSocket := listener waitForAcceptFor: 1. ] ensure: [ listener destroy ]. since then you have client and server socket. You can call it clientOne, clientTwo.
3) Do I need to have one of those 2 images act as a "serverâ ?
At least one image has to serve as a server (listen to connections). Maybe you could use a discovery service protocol. I do not have any experience about it.
4) Any helpful tip and/or interesting link to propose? 5) Can you think of any simple code or example I could look at to understand what I need to do?
There is a Trantor project where you could learn from: http://smalltalkhub.com/#!/~EvanDonahue/Trantor <http://smalltalkhub.com/#!/~EvanDonahue/Trantor> You can check an example here: TRNLog exampleOpenChatWithUserIdUsingTrantor But you are going to be more interested in testing: TrantorNodeTest Download it using: Gofer it smalltalkhubUser: 'EvanDonahue' project: 'Trantor'; configuration; loadBleedingEdge. And maybe Zinc (part of the Pharo image) has also good test examples. Cheers, Juraj
----------------- Benoît St-Jean Yahoo! Messenger: bstjean Twitter: @BenLeChialeux Pinterest: benoitstjean Instagram: Chef_Benito IRC: lamneth Blogue: endormitoire.wordpress.com "A standpoint is an intellectual horizon of radius zero". (A. Einstein)