SlideShare a Scribd company logo
Networking
 by Example!
        Noury Bouraqadi
http://car.mines-douai.fr/noury

  "Deep Into Smalltalk" Spring School
     8 march 2011 - Lille, France
2


                   Agenda
•  Networking Basics
  –  Sockets and protocols
  –  Client vs. Server
  –  Hands-on with SocketStream

•  Serving
  –  Connection vs. communication
  –  Hands-on Concurrency!

•  Complex interactions
  –  Exchanging objects over a network
  –  Remote messaging Hands-on
3




 Software                          Software
                 Nework

Process                              Process
            Soc
                ke        oc ket
                     t   S

    Bi-directional communication
4




   Device A                          Device B

 Software                              Software
                   Nework

Process                                  Process
              Soc
                  ke        oc ket
                       t   S
5




                Device Z

 Software                          Software
                 Nework

Process                              Process
            Soc
                ke        oc ket
                     t   S
6


                 2 Main
                Transport
                Protocols


          TCP               UDP


Transmission                    User
   Control                    Datagram
  Protocol                    Protocol
7


                  2 Main
                 Transport
                 Protocols


          TCP                UDP


•  Connected                 •  Connection free
   •  Reliable                   •  Unreliable
  •  Streams                    •  Limited size
8


Focus


                 SSH


    POP
                 TCP         SMTP



          HTTP         FTP
9

    Connection
     Handling
     Process




Server



                 Client A
                 Communication
                   Process
10

    Connection
     Handling
     Process




Server



                   Client A
   Communication   Communication
     Process         Process
11

    Connection
     Handling
     Process




Server             Client B
                   Communication
                     Process


                   Client A
   Communication   Communication
     Process         Process
12

    Connection
     Handling
     Process




Server             Client B
   Communication   Communication
     Process         Process


                   Client A
   Communication   Communication
     Process         Process
13

    Connection
     Handling
     Process       Client C
                   Communication
                     Process



Server             Client B
   Communication   Communication
     Process         Process


                   Client A
   Communication   Communication
     Process         Process
14

    Connection
     Handling
     Process       Client C
   Communication   Communication
     Process         Process



Server             Client B
   Communication   Communication
     Process         Process


                   Client A
   Communication   Communication
     Process         Process
15




  Client Socket
 So cketS tream!
1.  Connect to a server
2.  Send a String
3.  Receive a String
4.  Close
16


         Server for Tests

            Serve
                            Unix!
echo "Smalltalk" | nc –lk 12345

    Multiple
                         Port
  connections
                        number
17




|stream|
stream := SocketStream
   openConnectionToHostNamed: 'localhost'
   port: 12345.
[
   stream sendCommand: 'Pharo’.
   Transcript cr; show: (stream nextLineLf).
] ensure: [
   stream close]
18




Simplest Possible Server
1.  Listen on some port
2.  Accept 1 single client connection
3.  Send a String
4.  Receive a String
5.  Close
19


          Client for Tests

              Host
                               Unix!
echo "Smalltalk" | nc localhost 12345


                           Port
                          number
20




connectionSock := Socket newTCP.
[
  connectionSock listenOn: 12345 backlogSize: 10.
  interactSock := connectionSock
                             waitForAcceptFor: 30.
  stream := SocketStream on: interactSock.
  stream sendCommand: 'Pharo Server!’.
  Transcript cr; show: stream nextLineLf.
] ensure: [
  connectionSock closeAndDestroy.
  stream close.]
21




                                      Tw itter
Luc: I’m struggling with the robots
----------
Noury: Which robots? WifiBots or
Robulabs?
----------
                                       like
Luc: I need to setup the internal board of
Robulab #2
----------
22




         Multi-threaded
             Server

                             1 process
                          for connections
   1 process
for each client

                  Sycnrhonization
                     is needed
23




         Multi-threaded
                              fork
             Server

                             1 process
                          for connections
   1 process
for each client   Mutex
                  Sycnrhonization
                     is needed
   critical:
24




Socket   10110101   Socket
  1                   2
         Network
25


        Copying an object !

10@34                         10@34




                              110101
 1011




Socket        10110101    Socket
  1                         2
              Network
26




    ReferenceStream




streamed
           Represen
                      tationOf: 1
                                 0@34
27




Classes should be
  on both sides
28


Remote messaging




     Network
29




proxy               dispatcher




Socket                Socket
  1      10110101       2

         Network
30




                                     id3

                               id1



proxy
                    dispatcher
 id1



Socket                Socket
  1      10110101       2

         Network
31




 Remote
Transcript
32



                      Code
          Proxy    Deployment


                      Message
(De-)Serializing   passing control
   Messages


  Argument           Garbage
    passing         Collection?
 by reference
33




           Proxy


                        Message
                     passing control

doesNotUnderstand:
34




               ReferenceStream



                   unStream: aString
(De-)Serializing
   Messages


streamedRepresentationOf: anObject
35




What           OCEAN
Next?          New Socket
                 Library
Distributed-
  Objects
    (rST)
a Clean, Portable
Networking Library
Current network library
                               ByteArray
 TCP+              IPv4
UDP+…              +IPv6


          Socket              SocketAdress




                                      irty!
 HTTPSocket    SocksSocket
                                     D
                             0%
                           t ested
OCEAN Library
             Socket
   networkLibrary                 NetworkLibraryProxyFactory
   socketID



                                           WindowsLibrary


                                            MacOSLibrary
TcpSocket             UdpSocket


                                            LinuxLibrary


OOP            100%
               tested
                                          NetworkingPlugin
                                           WrapperLibrary
OCEAN Library Lates t
                               ers io n
             Socket           v
   networkLibrary                NetworkLibraryProxyFactory
   socketID



                                          WindowsLibrary


                                           MacOSLibrary
TcpSocket           UdpSocket


                                           LinuxLibrary


               100%      Pharo
OOP                       1.3
               tested
                                         NetworkingPlugin
                                          WrapperLibrary
OCEAN for Pharo 1.3             ALL
                             Primitives !


 Image   Socket         Plugin
         Library       Wrapper



 VM                     Socket
                        Plugin



 OS                   Network API
OCEAN for Pharo 1.4?

                                Posix
Image         Socket
                               Library
              Library
                               Wrapper



VM               Smalltalk       FFI
        OOP        IDE          Plugin



OS                           Posix Library
OCEAN + FFI + Posix

     350
     300
     250
     200                              Ocean
ms




     150                              OldSocket

     100
      50
       0
           Receive 10MB   Send 10MB
Generalization

Image      Library   Library   Library
              A         B         Z



VM                    FFI      Smaller
                                VM

Other OS   API α     API β        API ψ
44

More Related Content

What's hot

Python Basics
Python BasicsPython Basics
Python Basics
tusharpanda88
 
Python by Rj
Python by RjPython by Rj
Introduction To C#
Introduction To C#Introduction To C#
Introduction To C#
SAMIR BHOGAYTA
 
Python cheat-sheet
Python cheat-sheetPython cheat-sheet
Python cheat-sheet
srinivasanr281952
 
Lazy java
Lazy javaLazy java
Lazy java
Mario Fusco
 
Python Functions
Python   FunctionsPython   Functions
Python Functions
Mohammed Sikander
 
Introduction to Python - Training for Kids
Introduction to Python - Training for KidsIntroduction to Python - Training for Kids
Introduction to Python - Training for Kids
Aimee Maree Forsstrom
 
Google colab introduction
Google colab   introductionGoogle colab   introduction
Google colab introduction
Saravanakumar viswanathan
 
Python programming introduction
Python programming introductionPython programming introduction
Python programming introduction
Siddique Ibrahim
 
programming with python ppt
programming with python pptprogramming with python ppt
programming with python ppt
Priyanka Pradhan
 
PyQt: rapid application development
PyQt: rapid application developmentPyQt: rapid application development
PyQt: rapid application development
Develer S.r.l.
 
Hands on Session on Python
Hands on Session on PythonHands on Session on Python
Hands on Session on Python
Sumit Raj
 
File handling in c++
File handling in c++File handling in c++
File handling in c++
Daniel Nyagechi
 
Python programming
Python programmingPython programming
Python programming
Prof. Dr. K. Adisesha
 
Python programming : Control statements
Python programming : Control statementsPython programming : Control statements
Python programming : Control statements
Emertxe Information Technologies Pvt Ltd
 
Input processing and output in Python
Input processing and output in PythonInput processing and output in Python
Input processing and output in Python
MSB Academy
 
Programming Languages Trends for 2023
Programming Languages Trends for 2023Programming Languages Trends for 2023
Programming Languages Trends for 2023
Svetlin Nakov
 
Introduction to Python
Introduction to Python Introduction to Python
Introduction to Python
amiable_indian
 
Concurrency in Golang
Concurrency in GolangConcurrency in Golang
Concurrency in Golang
Oliver N
 
PART 1 - Python Tutorial | Variables and Data Types in Python
PART 1 - Python Tutorial | Variables and Data Types in PythonPART 1 - Python Tutorial | Variables and Data Types in Python
PART 1 - Python Tutorial | Variables and Data Types in Python
Shivam Mitra
 

What's hot (20)

Python Basics
Python BasicsPython Basics
Python Basics
 
Python by Rj
Python by RjPython by Rj
Python by Rj
 
Introduction To C#
Introduction To C#Introduction To C#
Introduction To C#
 
Python cheat-sheet
Python cheat-sheetPython cheat-sheet
Python cheat-sheet
 
Lazy java
Lazy javaLazy java
Lazy java
 
Python Functions
Python   FunctionsPython   Functions
Python Functions
 
Introduction to Python - Training for Kids
Introduction to Python - Training for KidsIntroduction to Python - Training for Kids
Introduction to Python - Training for Kids
 
Google colab introduction
Google colab   introductionGoogle colab   introduction
Google colab introduction
 
Python programming introduction
Python programming introductionPython programming introduction
Python programming introduction
 
programming with python ppt
programming with python pptprogramming with python ppt
programming with python ppt
 
PyQt: rapid application development
PyQt: rapid application developmentPyQt: rapid application development
PyQt: rapid application development
 
Hands on Session on Python
Hands on Session on PythonHands on Session on Python
Hands on Session on Python
 
File handling in c++
File handling in c++File handling in c++
File handling in c++
 
Python programming
Python programmingPython programming
Python programming
 
Python programming : Control statements
Python programming : Control statementsPython programming : Control statements
Python programming : Control statements
 
Input processing and output in Python
Input processing and output in PythonInput processing and output in Python
Input processing and output in Python
 
Programming Languages Trends for 2023
Programming Languages Trends for 2023Programming Languages Trends for 2023
Programming Languages Trends for 2023
 
Introduction to Python
Introduction to Python Introduction to Python
Introduction to Python
 
Concurrency in Golang
Concurrency in GolangConcurrency in Golang
Concurrency in Golang
 
PART 1 - Python Tutorial | Variables and Data Types in Python
PART 1 - Python Tutorial | Variables and Data Types in PythonPART 1 - Python Tutorial | Variables and Data Types in Python
PART 1 - Python Tutorial | Variables and Data Types in Python
 

Similar to Pharo Networking by Example

Np unit1
Np unit1Np unit1
Np unit1
vamsitricks
 
Socket programming using java
Socket programming using javaSocket programming using java
Socket programming using java
UC San Diego
 
Group 3 Presen.pptx
Group 3 Presen.pptxGroup 3 Presen.pptx
Group 3 Presen.pptx
StudyvAbhi
 
Hungary Usergroup - Midonet overlay programming
Hungary Usergroup - Midonet overlay programmingHungary Usergroup - Midonet overlay programming
Hungary Usergroup - Midonet overlay programming
Marton Kiss
 
Deep Dive Into Quantum
Deep Dive Into QuantumDeep Dive Into Quantum
Deep Dive Into Quantum
OpenCity Community
 
Introduzione a Software Define Networking
Introduzione a Software Define NetworkingIntroduzione a Software Define Networking
Introduzione a Software Define Networking
festival ICT 2016
 
Open stack with_openflowsdn-torii
Open stack with_openflowsdn-toriiOpen stack with_openflowsdn-torii
Open stack with_openflowsdn-torii
Hui Cheng
 
Network and Service Virtualization tutorial at ONUG Spring 2015
Network and Service Virtualization tutorial at ONUG Spring 2015Network and Service Virtualization tutorial at ONUG Spring 2015
Network and Service Virtualization tutorial at ONUG Spring 2015
SDN Hub
 
SDN: an introduction
SDN: an introductionSDN: an introduction
SDN: an introduction
Luca Profico
 
B21DA0201_04.ppt
B21DA0201_04.pptB21DA0201_04.ppt
B21DA0201_04.ppt
DrPreethiD1
 
Client server
Client serverClient server
Client server
maryam1231
 
Unit III IPV6 UDP
Unit III IPV6 UDPUnit III IPV6 UDP
Unit III IPV6 UDP
sangusajjan
 
SDN & NFV Introduction - Open Source Data Center Networking
SDN & NFV Introduction - Open Source Data Center NetworkingSDN & NFV Introduction - Open Source Data Center Networking
SDN & NFV Introduction - Open Source Data Center Networking
Thomas Graf
 
Network Virtualization & Software-defined Networking
Network Virtualization & Software-defined NetworkingNetwork Virtualization & Software-defined Networking
Network Virtualization & Software-defined Networking
Digicomp Academy AG
 
Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...
Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...
Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...
Kishor Datta Gupta
 
Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...
Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...
Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...
Sajib Sen
 
Networking is NOT Free: Lessons in Network Design
Networking is NOT Free: Lessons in Network DesignNetworking is NOT Free: Lessons in Network Design
Networking is NOT Free: Lessons in Network Design
Randy Bias
 
JDO 2019: Service mesh with Istio - Mariusz Gil
JDO 2019: Service mesh with Istio - Mariusz GilJDO 2019: Service mesh with Istio - Mariusz Gil
JDO 2019: Service mesh with Istio - Mariusz Gil
PROIDEA
 
Chapter 3 - Transport Layer for VN Students
Chapter 3 - Transport Layer for VN StudentsChapter 3 - Transport Layer for VN Students
Chapter 3 - Transport Layer for VN Students
alberttochiro
 
App layer
App layerApp layer
App layer
khushali_modi
 

Similar to Pharo Networking by Example (20)

Np unit1
Np unit1Np unit1
Np unit1
 
Socket programming using java
Socket programming using javaSocket programming using java
Socket programming using java
 
Group 3 Presen.pptx
Group 3 Presen.pptxGroup 3 Presen.pptx
Group 3 Presen.pptx
 
Hungary Usergroup - Midonet overlay programming
Hungary Usergroup - Midonet overlay programmingHungary Usergroup - Midonet overlay programming
Hungary Usergroup - Midonet overlay programming
 
Deep Dive Into Quantum
Deep Dive Into QuantumDeep Dive Into Quantum
Deep Dive Into Quantum
 
Introduzione a Software Define Networking
Introduzione a Software Define NetworkingIntroduzione a Software Define Networking
Introduzione a Software Define Networking
 
Open stack with_openflowsdn-torii
Open stack with_openflowsdn-toriiOpen stack with_openflowsdn-torii
Open stack with_openflowsdn-torii
 
Network and Service Virtualization tutorial at ONUG Spring 2015
Network and Service Virtualization tutorial at ONUG Spring 2015Network and Service Virtualization tutorial at ONUG Spring 2015
Network and Service Virtualization tutorial at ONUG Spring 2015
 
SDN: an introduction
SDN: an introductionSDN: an introduction
SDN: an introduction
 
B21DA0201_04.ppt
B21DA0201_04.pptB21DA0201_04.ppt
B21DA0201_04.ppt
 
Client server
Client serverClient server
Client server
 
Unit III IPV6 UDP
Unit III IPV6 UDPUnit III IPV6 UDP
Unit III IPV6 UDP
 
SDN & NFV Introduction - Open Source Data Center Networking
SDN & NFV Introduction - Open Source Data Center NetworkingSDN & NFV Introduction - Open Source Data Center Networking
SDN & NFV Introduction - Open Source Data Center Networking
 
Network Virtualization & Software-defined Networking
Network Virtualization & Software-defined NetworkingNetwork Virtualization & Software-defined Networking
Network Virtualization & Software-defined Networking
 
Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...
Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...
Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...
 
Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...
Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...
Leveraging Machine Learning Approach to Setup Software Defined Network(SDN) C...
 
Networking is NOT Free: Lessons in Network Design
Networking is NOT Free: Lessons in Network DesignNetworking is NOT Free: Lessons in Network Design
Networking is NOT Free: Lessons in Network Design
 
JDO 2019: Service mesh with Istio - Mariusz Gil
JDO 2019: Service mesh with Istio - Mariusz GilJDO 2019: Service mesh with Istio - Mariusz Gil
JDO 2019: Service mesh with Istio - Mariusz Gil
 
Chapter 3 - Transport Layer for VN Students
Chapter 3 - Transport Layer for VN StudentsChapter 3 - Transport Layer for VN Students
Chapter 3 - Transport Layer for VN Students
 
App layer
App layerApp layer
App layer
 

More from Noury Bouraqadi

Preview of WebST Web Components with Smalltalk
Preview of WebST Web Components with SmalltalkPreview of WebST Web Components with Smalltalk
Preview of WebST Web Components with Smalltalk
Noury Bouraqadi
 
WebST: Framework & Tools for Test-Driven Development of Web Components with S...
WebST: Framework & Tools for Test-Driven Development of Web Components with S...WebST: Framework & Tools for Test-Driven Development of Web Components with S...
WebST: Framework & Tools for Test-Driven Development of Web Components with S...
Noury Bouraqadi
 
PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023
Noury Bouraqadi
 
PharoJS for Real World Applications
PharoJS for Real World ApplicationsPharoJS for Real World Applications
PharoJS for Real World Applications
Noury Bouraqadi
 
Client-Server Development with PharoJS
Client-Server Development with PharoJSClient-Server Development with PharoJS
Client-Server Development with PharoJS
Noury Bouraqadi
 
ALPAGA : An AeriaL Platform for sampling Atmospheric Gases and Aerosols
ALPAGA : An AeriaL Platform for sampling Atmospheric Gases and AerosolsALPAGA : An AeriaL Platform for sampling Atmospheric Gases and Aerosols
ALPAGA : An AeriaL Platform for sampling Atmospheric Gases and Aerosols
Noury Bouraqadi
 
PharoJS ESUG 2019 Update
PharoJS ESUG 2019 UpdatePharoJS ESUG 2019 Update
PharoJS ESUG 2019 Update
Noury Bouraqadi
 
UbiquiTalk - An Infrastructure for Ubiquitous Computing (ESUG 2006)
UbiquiTalk - An Infrastructure for Ubiquitous Computing (ESUG 2006)UbiquiTalk - An Infrastructure for Ubiquitous Computing (ESUG 2006)
UbiquiTalk - An Infrastructure for Ubiquitous Computing (ESUG 2006)
Noury Bouraqadi
 
On 2D SLAM for Large Indoor Spaces: A Polygon-Based Solution
On 2D SLAM for Large Indoor Spaces: A Polygon-Based SolutionOn 2D SLAM for Large Indoor Spaces: A Polygon-Based Solution
On 2D SLAM for Large Indoor Spaces: A Polygon-Based Solution
Noury Bouraqadi
 
Towards Live Programming in ROS with PhaROS and LRP
Towards Live Programming in ROS with PhaROS and LRPTowards Live Programming in ROS with PhaROS and LRP
Towards Live Programming in ROS with PhaROS and LRP
Noury Bouraqadi
 
Talking to Robots with Pharo
Talking to Robots with PharoTalking to Robots with Pharo
Talking to Robots with Pharo
Noury Bouraqadi
 
First Tests of a Helper Robot in a Shopping Mall
First Tests of a Helper Robot in a Shopping MallFirst Tests of a Helper Robot in a Shopping Mall
First Tests of a Helper Robot in a Shopping Mall
Noury Bouraqadi
 
Towards Test-Driven Development for Mobile Robots
Towards Test-Driven Development for Mobile RobotsTowards Test-Driven Development for Mobile Robots
Towards Test-Driven Development for Mobile Robots
Noury Bouraqadi
 
Smalltalk to Rule all Robots
Smalltalk to Rule all RobotsSmalltalk to Rule all Robots
Smalltalk to Rule all Robots
Noury Bouraqadi
 
Ocean update - ESUG Conf 2011 @ Edinburgh
Ocean update - ESUG Conf 2011 @ Edinburgh Ocean update - ESUG Conf 2011 @ Edinburgh
Ocean update - ESUG Conf 2011 @ Edinburgh
Noury Bouraqadi
 
Robots Mobiles & Autonomes avec Pharo
Robots Mobiles & Autonomes avec PharoRobots Mobiles & Autonomes avec Pharo
Robots Mobiles & Autonomes avec Pharo
Noury Bouraqadi
 

More from Noury Bouraqadi (16)

Preview of WebST Web Components with Smalltalk
Preview of WebST Web Components with SmalltalkPreview of WebST Web Components with Smalltalk
Preview of WebST Web Components with Smalltalk
 
WebST: Framework & Tools for Test-Driven Development of Web Components with S...
WebST: Framework & Tools for Test-Driven Development of Web Components with S...WebST: Framework & Tools for Test-Driven Development of Web Components with S...
WebST: Framework & Tools for Test-Driven Development of Web Components with S...
 
PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023
 
PharoJS for Real World Applications
PharoJS for Real World ApplicationsPharoJS for Real World Applications
PharoJS for Real World Applications
 
Client-Server Development with PharoJS
Client-Server Development with PharoJSClient-Server Development with PharoJS
Client-Server Development with PharoJS
 
ALPAGA : An AeriaL Platform for sampling Atmospheric Gases and Aerosols
ALPAGA : An AeriaL Platform for sampling Atmospheric Gases and AerosolsALPAGA : An AeriaL Platform for sampling Atmospheric Gases and Aerosols
ALPAGA : An AeriaL Platform for sampling Atmospheric Gases and Aerosols
 
PharoJS ESUG 2019 Update
PharoJS ESUG 2019 UpdatePharoJS ESUG 2019 Update
PharoJS ESUG 2019 Update
 
UbiquiTalk - An Infrastructure for Ubiquitous Computing (ESUG 2006)
UbiquiTalk - An Infrastructure for Ubiquitous Computing (ESUG 2006)UbiquiTalk - An Infrastructure for Ubiquitous Computing (ESUG 2006)
UbiquiTalk - An Infrastructure for Ubiquitous Computing (ESUG 2006)
 
On 2D SLAM for Large Indoor Spaces: A Polygon-Based Solution
On 2D SLAM for Large Indoor Spaces: A Polygon-Based SolutionOn 2D SLAM for Large Indoor Spaces: A Polygon-Based Solution
On 2D SLAM for Large Indoor Spaces: A Polygon-Based Solution
 
Towards Live Programming in ROS with PhaROS and LRP
Towards Live Programming in ROS with PhaROS and LRPTowards Live Programming in ROS with PhaROS and LRP
Towards Live Programming in ROS with PhaROS and LRP
 
Talking to Robots with Pharo
Talking to Robots with PharoTalking to Robots with Pharo
Talking to Robots with Pharo
 
First Tests of a Helper Robot in a Shopping Mall
First Tests of a Helper Robot in a Shopping MallFirst Tests of a Helper Robot in a Shopping Mall
First Tests of a Helper Robot in a Shopping Mall
 
Towards Test-Driven Development for Mobile Robots
Towards Test-Driven Development for Mobile RobotsTowards Test-Driven Development for Mobile Robots
Towards Test-Driven Development for Mobile Robots
 
Smalltalk to Rule all Robots
Smalltalk to Rule all RobotsSmalltalk to Rule all Robots
Smalltalk to Rule all Robots
 
Ocean update - ESUG Conf 2011 @ Edinburgh
Ocean update - ESUG Conf 2011 @ Edinburgh Ocean update - ESUG Conf 2011 @ Edinburgh
Ocean update - ESUG Conf 2011 @ Edinburgh
 
Robots Mobiles & Autonomes avec Pharo
Robots Mobiles & Autonomes avec PharoRobots Mobiles & Autonomes avec Pharo
Robots Mobiles & Autonomes avec Pharo
 

Recently uploaded

find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
huseindihon
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
HackersList
 
Data Integration Basics: Merging & Joining Data
Data Integration Basics: Merging & Joining DataData Integration Basics: Merging & Joining Data
Data Integration Basics: Merging & Joining Data
Safe Software
 
Pigging Unit Lubricant Oil Blending Plant
Pigging Unit Lubricant Oil Blending PlantPigging Unit Lubricant Oil Blending Plant
Pigging Unit Lubricant Oil Blending Plant
LINUS PROJECTS (INDIA)
 
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and OllamaTirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Zilliz
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
RaminGhanbari2
 
Amul milk launches in US: Key details of its new products ...
Amul milk launches in US: Key details of its new products ...Amul milk launches in US: Key details of its new products ...
Amul milk launches in US: Key details of its new products ...
chetankumar9855
 
IPLOOK Remote-Sensing Satellite Solution
IPLOOK Remote-Sensing Satellite SolutionIPLOOK Remote-Sensing Satellite Solution
IPLOOK Remote-Sensing Satellite Solution
IPLOOK Networks
 
Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024
aakash malhotra
 
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
alexjohnson7307
 
“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...
“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...
“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...
Edge AI and Vision Alliance
 
(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf
(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf
(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf
Priyanka Aash
 
Opencast Summit 2024 — Opencast @ University of Münster
Opencast Summit 2024 — Opencast @ University of MünsterOpencast Summit 2024 — Opencast @ University of Münster
Opencast Summit 2024 — Opencast @ University of Münster
Matthias Neugebauer
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc
 
High Profile Girls Call ServiCe Hyderabad 0000000000 Tanisha Best High Class ...
High Profile Girls Call ServiCe Hyderabad 0000000000 Tanisha Best High Class ...High Profile Girls Call ServiCe Hyderabad 0000000000 Tanisha Best High Class ...
High Profile Girls Call ServiCe Hyderabad 0000000000 Tanisha Best High Class ...
aslasdfmkhan4750
 
Use Cases & Benefits of RPA in Manufacturing in 2024.pptx
Use Cases & Benefits of RPA in Manufacturing in 2024.pptxUse Cases & Benefits of RPA in Manufacturing in 2024.pptx
Use Cases & Benefits of RPA in Manufacturing in 2024.pptx
SynapseIndia
 
EuroPython 2024 - Streamlining Testing in a Large Python Codebase
EuroPython 2024 - Streamlining Testing in a Large Python CodebaseEuroPython 2024 - Streamlining Testing in a Large Python Codebase
EuroPython 2024 - Streamlining Testing in a Large Python Codebase
Jimmy Lai
 
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
Priyanka Aash
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
Neo4j
 
Vulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive OverviewVulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive Overview
Steven Carlson
 

Recently uploaded (20)

find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
 
Data Integration Basics: Merging & Joining Data
Data Integration Basics: Merging & Joining DataData Integration Basics: Merging & Joining Data
Data Integration Basics: Merging & Joining Data
 
Pigging Unit Lubricant Oil Blending Plant
Pigging Unit Lubricant Oil Blending PlantPigging Unit Lubricant Oil Blending Plant
Pigging Unit Lubricant Oil Blending Plant
 
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and OllamaTirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
 
Amul milk launches in US: Key details of its new products ...
Amul milk launches in US: Key details of its new products ...Amul milk launches in US: Key details of its new products ...
Amul milk launches in US: Key details of its new products ...
 
IPLOOK Remote-Sensing Satellite Solution
IPLOOK Remote-Sensing Satellite SolutionIPLOOK Remote-Sensing Satellite Solution
IPLOOK Remote-Sensing Satellite Solution
 
Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024
 
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
 
“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...
“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...
“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...
 
(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf
(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf
(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf
 
Opencast Summit 2024 — Opencast @ University of Münster
Opencast Summit 2024 — Opencast @ University of MünsterOpencast Summit 2024 — Opencast @ University of Münster
Opencast Summit 2024 — Opencast @ University of Münster
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
 
High Profile Girls Call ServiCe Hyderabad 0000000000 Tanisha Best High Class ...
High Profile Girls Call ServiCe Hyderabad 0000000000 Tanisha Best High Class ...High Profile Girls Call ServiCe Hyderabad 0000000000 Tanisha Best High Class ...
High Profile Girls Call ServiCe Hyderabad 0000000000 Tanisha Best High Class ...
 
Use Cases & Benefits of RPA in Manufacturing in 2024.pptx
Use Cases & Benefits of RPA in Manufacturing in 2024.pptxUse Cases & Benefits of RPA in Manufacturing in 2024.pptx
Use Cases & Benefits of RPA in Manufacturing in 2024.pptx
 
EuroPython 2024 - Streamlining Testing in a Large Python Codebase
EuroPython 2024 - Streamlining Testing in a Large Python CodebaseEuroPython 2024 - Streamlining Testing in a Large Python Codebase
EuroPython 2024 - Streamlining Testing in a Large Python Codebase
 
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
 
Vulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive OverviewVulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive Overview
 

Pharo Networking by Example

  • 1. Networking by Example! Noury Bouraqadi http://car.mines-douai.fr/noury "Deep Into Smalltalk" Spring School 8 march 2011 - Lille, France
  • 2. 2 Agenda •  Networking Basics –  Sockets and protocols –  Client vs. Server –  Hands-on with SocketStream •  Serving –  Connection vs. communication –  Hands-on Concurrency! •  Complex interactions –  Exchanging objects over a network –  Remote messaging Hands-on
  • 3. 3 Software Software Nework Process Process Soc ke oc ket t S Bi-directional communication
  • 4. 4 Device A Device B Software Software Nework Process Process Soc ke oc ket t S
  • 5. 5 Device Z Software Software Nework Process Process Soc ke oc ket t S
  • 6. 6 2 Main Transport Protocols TCP UDP Transmission User Control Datagram Protocol Protocol
  • 7. 7 2 Main Transport Protocols TCP UDP •  Connected •  Connection free •  Reliable •  Unreliable •  Streams •  Limited size
  • 8. 8 Focus SSH POP TCP SMTP HTTP FTP
  • 9. 9 Connection Handling Process Server Client A Communication Process
  • 10. 10 Connection Handling Process Server Client A Communication Communication Process Process
  • 11. 11 Connection Handling Process Server Client B Communication Process Client A Communication Communication Process Process
  • 12. 12 Connection Handling Process Server Client B Communication Communication Process Process Client A Communication Communication Process Process
  • 13. 13 Connection Handling Process Client C Communication Process Server Client B Communication Communication Process Process Client A Communication Communication Process Process
  • 14. 14 Connection Handling Process Client C Communication Communication Process Process Server Client B Communication Communication Process Process Client A Communication Communication Process Process
  • 15. 15 Client Socket So cketS tream! 1.  Connect to a server 2.  Send a String 3.  Receive a String 4.  Close
  • 16. 16 Server for Tests Serve Unix! echo "Smalltalk" | nc –lk 12345 Multiple Port connections number
  • 17. 17 |stream| stream := SocketStream openConnectionToHostNamed: 'localhost' port: 12345. [ stream sendCommand: 'Pharo’. Transcript cr; show: (stream nextLineLf). ] ensure: [ stream close]
  • 18. 18 Simplest Possible Server 1.  Listen on some port 2.  Accept 1 single client connection 3.  Send a String 4.  Receive a String 5.  Close
  • 19. 19 Client for Tests Host Unix! echo "Smalltalk" | nc localhost 12345 Port number
  • 20. 20 connectionSock := Socket newTCP. [ connectionSock listenOn: 12345 backlogSize: 10. interactSock := connectionSock waitForAcceptFor: 30. stream := SocketStream on: interactSock. stream sendCommand: 'Pharo Server!’. Transcript cr; show: stream nextLineLf. ] ensure: [ connectionSock closeAndDestroy. stream close.]
  • 21. 21 Tw itter Luc: I’m struggling with the robots ---------- Noury: Which robots? WifiBots or Robulabs? ---------- like Luc: I need to setup the internal board of Robulab #2 ----------
  • 22. 22 Multi-threaded Server 1 process for connections 1 process for each client Sycnrhonization is needed
  • 23. 23 Multi-threaded fork Server 1 process for connections 1 process for each client Mutex Sycnrhonization is needed critical:
  • 24. 24 Socket 10110101 Socket 1 2 Network
  • 25. 25 Copying an object ! 10@34 10@34 110101 1011 Socket 10110101 Socket 1 2 Network
  • 26. 26 ReferenceStream streamed Represen tationOf: 1 0@34
  • 27. 27 Classes should be on both sides
  • 29. 29 proxy dispatcher Socket Socket 1 10110101 2 Network
  • 30. 30 id3 id1 proxy dispatcher id1 Socket Socket 1 10110101 2 Network
  • 32. 32 Code Proxy Deployment Message (De-)Serializing passing control Messages Argument Garbage passing Collection? by reference
  • 33. 33 Proxy Message passing control doesNotUnderstand:
  • 34. 34 ReferenceStream unStream: aString (De-)Serializing Messages streamedRepresentationOf: anObject
  • 35. 35 What OCEAN Next? New Socket Library Distributed- Objects (rST)
  • 37. Current network library ByteArray TCP+ IPv4 UDP+… +IPv6 Socket SocketAdress irty! HTTPSocket SocksSocket D 0% t ested
  • 38. OCEAN Library Socket networkLibrary NetworkLibraryProxyFactory socketID WindowsLibrary MacOSLibrary TcpSocket UdpSocket LinuxLibrary OOP 100% tested NetworkingPlugin WrapperLibrary
  • 39. OCEAN Library Lates t ers io n Socket v networkLibrary NetworkLibraryProxyFactory socketID WindowsLibrary MacOSLibrary TcpSocket UdpSocket LinuxLibrary 100% Pharo OOP 1.3 tested NetworkingPlugin WrapperLibrary
  • 40. OCEAN for Pharo 1.3 ALL Primitives ! Image Socket Plugin Library Wrapper VM Socket Plugin OS Network API
  • 41. OCEAN for Pharo 1.4? Posix Image Socket Library Library Wrapper VM Smalltalk FFI OOP IDE Plugin OS Posix Library
  • 42. OCEAN + FFI + Posix 350 300 250 200 Ocean ms 150 OldSocket 100 50 0 Receive 10MB Send 10MB
  • 43. Generalization Image Library Library Library A B Z VM FFI Smaller VM Other OS API α API β API ψ
  • 44. 44