jagomart
digital resources
picture1_Programming Perl Pdf 197054 | 519 Fa04 03 Sockets V0


 157x       Filetype PDF       File size 0.36 MB       Source: www.cs.cornell.edu


File: Programming Perl Pdf 197054 | 519 Fa04 03 Sockets V0
socket programming socket programming goal learn how to build client server application that communicate using sockets socket api socket rohan murty introduced in bsd4 1 a host local application unix ...

icon picture PDF Filetype PDF | Posted on 07 Feb 2023 | 2 years ago
Partial capture of text on file.
                                        Socket Programming                                                                              Socket programming
                                                                                                                           Goal: learn how to build client/server application 
                                                                                                                               that communicate using sockets
                                                                                                                            Socket API                                   socket
                                                      Rohan Murty                                                           •  introduced in BSD4.1                      a host-local, application-
                                                                                                                               UNIX, 1981                                     created/owned, 
                                                     Hitesh Ballani                                                         •  Sockets are explicitly                    OS-controlled interface (a 
                                                                                                                               created, used, released by                    “door”) into which
                                                                                                                               applications                               application process can 
                                                     Last Modified:                                                         •  client/server paradigm                          both send and 
                                                                                                                            •  two types of transport                    receive messages to/from 
                                               2/8/2004 8:30:45 AM                                                                                                          another (remote or 
                                                                                                                               service via socket API:                   local) application process
                                                                                                                                – unreliable datagram 
                                                    Slides adapted from Prof. Matthews’ slides from 2003SP                      – reliable, byte stream-
                                                                                                                                   oriented 
                                                         Sockets                                                                  Languages and Platforms
                            Socket: a door between application                                                            Socket API is available for many languages 
                                process and end-end-transport protocol                                                       on many platforms:
                                (UCP or TCP)                                                                              • C, Java, Perl, Python,… 
                                                                                                                          • *nix, Windows,…
                             controlled by                                                controlled by
                              application  process                            process     application
                               developer    socket                             socket     developer                       Socket Programs written in any language 
                            controlled by   kernel                             kernel     controlled by
                               operating    buffers,        internet          buffers,    operating                          and running on any platform can 
                                 system    variables                         variables    system                             communicate with each other!
                                           host or                            host or                                     Writing communicating programs in different 
                                            server                            server                                         languages is a good exercise
                                                                                                                                                                                                                    1
                                          Decisions                                                 Socket programming with TCP
                                                                                                Client must contact server   •  When client creates socket: 
                     • Before you go to write socket code, decide                               • server process must           client TCP establishes 
                                                                                                  first be running              connection to server TCP
                         –Do you want a TCP-style reliable,  full duplex,                                                    •  When contacted by client, 
                           connection oriented channel? Or do you want                          • server must have              server TCP creates new 
                                                                                                  created socket (door)         socket for server process to 
                           a UDP-style, unreliable, message oriented                              that welcomes client’s        communicate with client
                           channel?                                                                                              – Frees up incoming port
                                                                                                  contact                        – allows server to talk with 
                         –Will the code you are writing be the client or                        Client contacts server by:         multiple clients
                           the server?                                                          • creating client-local        application viewpoint
                            • Client:  you assume that there is a process already                 TCP socket                    TCP provides reliable, in-order
                              running on another machines that you need to                      • specifying IP address,           transfer of bytes (“pipe”) 
                              connect to.                                                         port number of server           between client and server
                            • Server:  you will just start up and wait to be                      process
                              contacted
                             Pseudo code TCP client                                                   Pseudo code TCP server
                     • Create socket, connectSocket                                            •  Create socket (serverSocket)
                     • Do an active connect specifying the IP                                  •  Bind socket to a specific port where clients can contact 
                                                                                                  you 
                        address and port number of server                                      •  Register with the kernel your willingness to listen that on 
                     • Read and Write Data Into                                                   socket for client to contact you 
                                                                                               •  Loop
                            connectSocket to Communicate with                                         Accept new connection (connectSocket)
                        server                                                                        Read and Write Data Into connectSocket to 
                     • Close connectSocket                                                                   Communicate with client
                                                                                                      Close connectSocket
                                                                                                  End Loop
                                                                                               •  Close serverSocket
                                                                                                                                                                      2
                                 Example: Java client (TCP)                                                        Example: Java client (TCP), cont.
                                        import java.io.*; 
                                        import java.net.*;                                                                 Create     BufferedReader inFromServer = 
                                        class TCPClient {                                                             input stream      new BufferedReader(new
                                          public static void main(String argv[]) throws Exception                attached to socket     InputStreamReader(clientSocket.getInputStream())); 
                                          {                                                                                            sentence = inFromUser.readLine(); 
                                             String sentence;                                                             Send line
                                             String modifiedSentence;                                                      to server   outToServer.writeBytes(sentence + '\n'); 
                                 Create      BufferedReader inFromUser = 
                            input stream      new BufferedReader(new InputStreamReader(System.in));                       Read line    modifiedSentence = inFromServer.readLine(); 
                                Create                                                                                  from server
                           client socket,    Socket clientSocket = new Socket("hostname", 6789);                                       System.out.println("FROM SERVER: " + modifiedSentence); 
                        connect to server                                                                                              clientSocket.close(); 
                                 Create      DataOutputStream outToServer = 
                           output stream      new DataOutputStream(clientSocket.getOutputStream());                                  } 
                       attached to socket                                                                                         }
                                Example: Java server (TCP)                                                        Example: Java server (TCP), cont
                                           import java.io.*; 
                                           import java.net.*; 
                                                                                                                  Create output
                                           class TCPServer {                                                    stream, attached   DataOutputStream  outToClient = 
                                            public static void main(String argv[]) throws Exception                    to socket    new DataOutputStream(connectionSocket.getOutputStream());
                                             {                                                                     Read in  line
                                              String clientSentence;                                                from socket    clientSentence = inFromClient.readLine(); 
                                  Create      String capitalizedSentence; 
                        welcoming socket      ServerSocket welcomeSocket = new ServerSocket(6789);                                 capitalizedSentence = clientSentence.toUpperCase() + '\n'; 
                             at port 6789                                                                         Write out line
                                              while(true) {                                                           to socket    outToClient.writeBytes(capitalizedSentence); 
                       Wait, on welcoming                                                                                        } 
                         socket for contact      Socket connectionSocket = welcomeSocket.accept();                             } 
                                 by client                                                                                   }           End of while loop,
                              Create input       BufferedReader inFromClient =                                                           loop back and wait for
                         stream, attached         new BufferedReader(new                                                                 another client connection
                                to socket         InputStreamReader(connectionSocket.getInputStream())); 
                                                                                                                                                                                                    3
                                      Client/server socket interaction: TCP                                                                                                                     Queues
                                                                           (Java)
                                     Server (running on hostid)                             Client                                                         •   We just saw a simple example, with one socket on the 
                                            create socket,                                                                                                     server handling incoming connections
                                            port=x, for
                                            incoming request:                                                                                              •   While the server socket is busy, incoming connections 
                                             welcomeSocket= 
                                                ServerSocket()                                                                                                 are stored in a queue until it can accept them
                                             wait for incoming           TCP              create socket,                                                   •   Most systems maintain a queue length between 5 and 
                                             connection request  connection setup         connect to hostid, port=x                                            50
                                             connectionSocket =                           clientSocket = 
                                             welcomeSocket.accept()                             Socket()                                                   •   Once the queue fills up, further incoming connections 
                                                                                            send request using                                                 are refused until space in the queue opens up
                                            read request from                               clientSocket                                                   •   This is a problem in a situation where our server has to 
                                            connectionSocket                                                                                                   handle many concurrent incoming connections. 
                                             write reply to                                                                                                    Example: HTTP servers
                                             connectionSocket                                read reply from
                                                                                             clientSocket                                                       – Solution? Use concurrency
                                             close                                           close
                                             connectionSocket                                clientSocket
                                              Concurrent TCP Servers                                                                                                                     Threadpools
                                  •   Benefit comes in ability to hand off processing to another 
                                      process                                                                                                                                                               1
                                        – Parent process creates the “door bell” or “welcome”                                                                    serverSocket                                                               Client
                                           socket on well-known port and waits for clients to 
                                           request connection                                                                                                              2                            2.1
                                        – When a client does connect, fork off a child process to 
                                           handle that connection so that parent process can                                                                          Thread                    3
                                           return to waiting for connections as soon as possible                                                                       Pool
                                  •   Multithreaded server: same idea, just spawn off another 
                                      thread rather than a full process                                                                                      Worker Threads                                                                 Client
                                        – Threadpools?
                                                                                                                                                                                                                                                                              4
The words contained in this file might help you see if this file matches what you are looking for:

...Socket programming goal learn how to build client server application that communicate using sockets api rohan murty introduced in bsd a host local unix created owned hitesh ballani are explicitly os controlled interface used released by door into which applications process can last modified paradigm both send and two types of transport receive messages from am another remote or service via unreliable datagram slides adapted prof matthews sp reliable byte stream oriented languages platforms between is available for many end protocol on ucp tcp c java perl python nix windows developer programs written any language kernel operating buffers internet running platform system variables with each other writing communicating different good exercise decisions must contact when creates before you go write code decide establishes first be connection do want style full duplex contacted channel have new udp message welcomes s frees up incoming port allows talk will the contacts multiple clients crea...

no reviews yet
Please Login to review.