SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

The Five Stages of Enterprise Jupyter Deployment
The Five Stages of Enterprise Jupyter DeploymentThe Five Stages of Enterprise Jupyter Deployment
The Five Stages of Enterprise Jupyter Deployment
Frederick Reiss
 

Tendances (20)

OpenStack DevStack Install - 2부 (Multi-nodes)
OpenStack DevStack Install - 2부 (Multi-nodes)OpenStack DevStack Install - 2부 (Multi-nodes)
OpenStack DevStack Install - 2부 (Multi-nodes)
 
Git & GitHub for Beginners
Git & GitHub for BeginnersGit & GitHub for Beginners
Git & GitHub for Beginners
 
Postman Introduction
Postman IntroductionPostman Introduction
Postman Introduction
 
Job Queue in Golang
Job Queue in GolangJob Queue in Golang
Job Queue in Golang
 
Lecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinksLecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinks
 
Practical Celery
Practical CeleryPractical Celery
Practical Celery
 
Maven
MavenMaven
Maven
 
Using Mountebank to inject behavior into test stubs
Using Mountebank to inject behavior into test stubsUsing Mountebank to inject behavior into test stubs
Using Mountebank to inject behavior into test stubs
 
Postman Webinar: Postman 101
Postman Webinar: Postman 101Postman Webinar: Postman 101
Postman Webinar: Postman 101
 
Developing a user-friendly OpenResty application
Developing a user-friendly OpenResty applicationDeveloping a user-friendly OpenResty application
Developing a user-friendly OpenResty application
 
Concurrency in Golang
Concurrency in GolangConcurrency in Golang
Concurrency in Golang
 
Celery
CeleryCelery
Celery
 
Practical non blocking microservices in java 8
Practical non blocking microservices in java 8Practical non blocking microservices in java 8
Practical non blocking microservices in java 8
 
Api fundamentals
Api fundamentalsApi fundamentals
Api fundamentals
 
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
 
Postman: An Introduction for Developers
Postman: An Introduction for DevelopersPostman: An Introduction for Developers
Postman: An Introduction for Developers
 
The Five Stages of Enterprise Jupyter Deployment
The Five Stages of Enterprise Jupyter DeploymentThe Five Stages of Enterprise Jupyter Deployment
The Five Stages of Enterprise Jupyter Deployment
 
Postman
PostmanPostman
Postman
 
Module 5: YANG Tutorial - part 1
Module 5: YANG Tutorial - part 1Module 5: YANG Tutorial - part 1
Module 5: YANG Tutorial - part 1
 
Postman.ppt
Postman.pptPostman.ppt
Postman.ppt
 

Similaire à Pharo Networking by Example

Introduzione a Software Define Networking
Introduzione a Software Define NetworkingIntroduzione a Software Define Networking
Introduzione a Software Define Networking
festival ICT 2016
 
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
 
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
 

Similaire à 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
 

Plus de Noury Bouraqadi

Plus de 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
 

Dernier

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 

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