SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux DevelopersOpersys inc.
 
Why The Free Monad isn't Free
Why The Free Monad isn't FreeWhy The Free Monad isn't Free
Why The Free Monad isn't FreeKelley Robinson
 
Kotlin coroutine - behind the scenes
Kotlin coroutine - behind the scenesKotlin coroutine - behind the scenes
Kotlin coroutine - behind the scenesAnh Vu
 
Hunting rootkits with windbg
Hunting rootkits with windbgHunting rootkits with windbg
Hunting rootkits with windbgFrank Boldewin
 
The Evolution of Scala
The Evolution of ScalaThe Evolution of Scala
The Evolution of ScalaMartin Odersky
 
Bloc for Pharo: Current State and Future Perspective
Bloc for Pharo: Current State and Future PerspectiveBloc for Pharo: Current State and Future Perspective
Bloc for Pharo: Current State and Future PerspectiveESUG
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Yoshiyuki Nakamura
 
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率Shengyou Fan
 
SSL Setup for Oracle 10g AS
SSL Setup for Oracle 10g ASSSL Setup for Oracle 10g AS
SSL Setup for Oracle 10g ASEnkitec
 
GRE (generic routing encapsulation)
GRE (generic routing encapsulation)GRE (generic routing encapsulation)
GRE (generic routing encapsulation)Netwax Lab
 
Android Binder IPC for Linux
Android Binder IPC for LinuxAndroid Binder IPC for Linux
Android Binder IPC for LinuxYu-Hsin Hung
 
Free CCNP switching workbook by networkershome pdf
Free CCNP switching workbook by networkershome pdfFree CCNP switching workbook by networkershome pdf
Free CCNP switching workbook by networkershome pdfNetworkershome
 
애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향 애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향 Young-Ho Cho
 
Proxies are Awesome!
Proxies are Awesome!Proxies are Awesome!
Proxies are Awesome!Brendan Eich
 
Android booting sequece and setup and debugging
Android booting sequece and setup and debuggingAndroid booting sequece and setup and debugging
Android booting sequece and setup and debuggingUtkarsh Mankad
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System ServerOpersys inc.
 

Was ist angesagt? (20)

Android binder-ipc
Android binder-ipcAndroid binder-ipc
Android binder-ipc
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
 
Why The Free Monad isn't Free
Why The Free Monad isn't FreeWhy The Free Monad isn't Free
Why The Free Monad isn't Free
 
Kotlin coroutine - behind the scenes
Kotlin coroutine - behind the scenesKotlin coroutine - behind the scenes
Kotlin coroutine - behind the scenes
 
Hunting rootkits with windbg
Hunting rootkits with windbgHunting rootkits with windbg
Hunting rootkits with windbg
 
The Evolution of Scala
The Evolution of ScalaThe Evolution of Scala
The Evolution of Scala
 
Bloc for Pharo: Current State and Future Perspective
Bloc for Pharo: Current State and Future PerspectiveBloc for Pharo: Current State and Future Perspective
Bloc for Pharo: Current State and Future Perspective
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記
 
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
 
SSL Setup for Oracle 10g AS
SSL Setup for Oracle 10g ASSSL Setup for Oracle 10g AS
SSL Setup for Oracle 10g AS
 
GRE (generic routing encapsulation)
GRE (generic routing encapsulation)GRE (generic routing encapsulation)
GRE (generic routing encapsulation)
 
Android Binder IPC for Linux
Android Binder IPC for LinuxAndroid Binder IPC for Linux
Android Binder IPC for Linux
 
Free CCNP switching workbook by networkershome pdf
Free CCNP switching workbook by networkershome pdfFree CCNP switching workbook by networkershome pdf
Free CCNP switching workbook by networkershome pdf
 
애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향 애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향
 
Dependency Inversion Principle
Dependency Inversion PrincipleDependency Inversion Principle
Dependency Inversion Principle
 
Proxies are Awesome!
Proxies are Awesome!Proxies are Awesome!
Proxies are Awesome!
 
Android booting sequece and setup and debugging
Android booting sequece and setup and debuggingAndroid booting sequece and setup and debugging
Android booting sequece and setup and debugging
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System Server
 
Applied Computer Science Concepts in Android
Applied Computer Science Concepts in AndroidApplied Computer Science Concepts in Android
Applied Computer Science Concepts in Android
 
Http4s
Http4s Http4s
Http4s
 

Ähnlich wie Pharo Networking by Example

Socket programming using java
Socket programming using javaSocket programming using java
Socket programming using javaUC San Diego
 
Group 3 Presen.pptx
Group 3 Presen.pptxGroup 3 Presen.pptx
Group 3 Presen.pptxStudyvAbhi
 
Hungary Usergroup - Midonet overlay programming
Hungary Usergroup - Midonet overlay programmingHungary Usergroup - Midonet overlay programming
Hungary Usergroup - Midonet overlay programmingMarton Kiss
 
Introduzione a Software Define Networking
Introduzione a Software Define NetworkingIntroduzione a Software Define Networking
Introduzione a Software Define Networkingfestival ICT 2016
 
Open stack with_openflowsdn-torii
Open stack with_openflowsdn-toriiOpen stack with_openflowsdn-torii
Open stack with_openflowsdn-toriiHui 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 2015SDN Hub
 
SDN: an introduction
SDN: an introductionSDN: an introduction
SDN: an introductionLuca Profico
 
B21DA0201_04.ppt
B21DA0201_04.pptB21DA0201_04.ppt
B21DA0201_04.pptDrPreethiD1
 
Unit III IPV6 UDP
Unit III IPV6 UDPUnit III IPV6 UDP
Unit III IPV6 UDPsangusajjan
 
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 NetworkingThomas Graf
 
Network Virtualization & Software-defined Networking
Network Virtualization & Software-defined NetworkingNetwork Virtualization & Software-defined Networking
Network Virtualization & Software-defined NetworkingDigicomp 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 DesignRandy 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 GilPROIDEA
 
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 Studentsalberttochiro
 

Ähnlich wie 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
 

Mehr von 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 2023Noury Bouraqadi
 
PharoJS for Real World Applications
PharoJS for Real World ApplicationsPharoJS for Real World Applications
PharoJS for Real World ApplicationsNoury Bouraqadi
 
Client-Server Development with PharoJS
Client-Server Development with PharoJSClient-Server Development with PharoJS
Client-Server Development with PharoJSNoury 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 AerosolsNoury Bouraqadi
 
PharoJS ESUG 2019 Update
PharoJS ESUG 2019 UpdatePharoJS ESUG 2019 Update
PharoJS ESUG 2019 UpdateNoury 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 SolutionNoury 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 LRPNoury Bouraqadi
 
Talking to Robots with Pharo
Talking to Robots with PharoTalking to Robots with Pharo
Talking to Robots with PharoNoury 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 MallNoury 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 RobotsNoury Bouraqadi
 
Smalltalk to Rule all Robots
Smalltalk to Rule all RobotsSmalltalk to Rule all Robots
Smalltalk to Rule all RobotsNoury 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 PharoNoury Bouraqadi
 

Mehr von Noury Bouraqadi (14)

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
 

Kürzlich hochgeladen

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 

Kürzlich hochgeladen (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 

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