Socket Programming Overview - University Of Minnesota

Transcription

Socket Programming Socket Programming Overview– Socket Programming with UDP– Socket Programming with TCP Python Socket ProgrammingReadings: Chapter 2: Sections 2.7CSci4211:Socket Programming1

Recap: Client-Server CommunicationParadigmTypical network app has twopieces: client and serverapplicationtransportnetworkdata linkphysicalClient:initiates contact with server( speaks first )typically requests servicefrom serverServer:provides requested service toclient e.g., Web server sendsrequested Web page, mail serverdelivers e-mailCSci4211:requestSocket Programmingreplyapplicationtransportnetworkdata linkphysical2

Recap: Addresses and Ports Host (NIC card) identified by unique IP address Network application/process identified by portnumber Network connection identified by a 5-tuple (src ip,src port, dst ip, dst port, protocol) Two kinds of Internet transport services providedto applications– Connection-oriented TCP– Connectionless UDPCSci4211:Socket Programming3

Socket ProgrammingGoal: learn how to build client/server applications thatcommunicate using socketsSocket: door between application process and end-endtransport ntrolled byapp developercontrolledby OSphysicalphysicalCSci4211:Socket Programming4

Socket programmingTwo socket types for two transport services: UDP: unreliable datagram TCP: reliable, byte stream-orientedApplication Example:1. client reads a line of characters (data) from itskeyboard and sends data to server2. server receives the data and converts charactersto uppercase3. server sends modified data to client4. client receives modified data and displays line onits screenCSci4211:Socket Programming5

Socket programming with UDPUDP: no connection between client & server no handshaking before sending data sender explicitly attaches IP destination address andport # to each packet receiver extracts sender IP address and port# fromreceived packetUDP: transmitted data may be lost or received outof-orderApplication viewpoint: UDP provides unreliable transfer of groups of bytes( datagrams ) between client and serverCSci4211:Socket Programming6

Client/server socket interaction: UDPserver (running on serverIP)create socket, port x:serverSocket socket(AF INET,SOCK DGRAM)read datagram fromserverSocketwrite reply toserverSocketspecifyingclient address,port numberclientcreate socket:clientSocket socket(AF INET,SOCK DGRAM)Create datagram with server IP andport x; send datagram viaclientSocketread datagram fromclientSocketcloseclientSocketCSci4211:Socket Programming7

Example app: UDP clientPython UDPClientinclude Python’s socketlibrarycreate UDP socket forserverget user keyboardinputAttach server name, port tomessage; send into socketread reply characters fromsocket into stringprint out received stringand close socketfrom socket import *serverName ‘hostname’serverPort 12000clientSocket socket(AF INET,SOCK DGRAM)message raw input(’Input lowercase (serverName, serverPort))modifiedMessage, serverAddress clientSocket.recvfrom(2048)print 11:Socket Programming8

Example app: UDP serverPython UDPServercreate UDP socketbind socket to local portnumber 12000Read from UDP socket intomessage, getting client’saddress (client IP and port)send upper case stringback to this clientfrom socket import *serverPort 12000serverSocket socket(AF INET, SOCK DGRAM)serverSocket.bind(('', serverPort))print ( The server is ready to receive”)while True:message, clientAddress serverSocket.recvfrom(2048)modifiedMessage edMessage.encode(),clientAddress)CSci4211:Socket Programming9

Socket programming with TCPclient must contact server when contacted by client, server process must first berunning server must have createdsocket (door) that welcomesclient s contactclient contacts server by: Creating TCP socket,specifying IP address, portnumber of server process when client creates socket:client TCP establishesconnection to server TCPCSci4211:server TCP creates newsocket for server process tocommunicate with thatparticular client– allows server to talk withmultiple clients– source port numbers usedto distinguish clients(more in Chap 3)application viewpoint:TCP provides reliable, in-orderbyte-stream transfer ( pipe )between client and serverSocket Programming10

Client/server socket interaction: TCPclientserver (running on hostid)create socket,port x, for incomingrequest:serverSocket socket()wait for incomingTCPconnection requestconnectionSocket connectionserverSocket.accept()setupcreate socket,connect to hostid, port xclientSocket socket()send request usingclientSocketread request fromconnectionSocketwrite reply toconnectionSocketread reply cketCSci4211:Socket Programming11

Example app: TCP clientPython TCPClientcreate TCP socket forserver, remote port 12000No need to attach servername, portfrom socket import *serverName ’servername’serverPort 12000clientSocket socket(AF INET, SOCK ))sentence raw input(‘Input lowercase odifiedSentence clientSocket.recv(1024)print (‘From Server:’, 4211:Socket Programming12

Example app: TCP serverPython TCPServercreate TCP welcomingsocketserver begins listening forincoming TCP requestsserver waits on accept()for incoming requests, newsocket created on returnread bytes from socket (butnot address as in UDP)close connection to thisclient (but not welcomingsocket)from socket import *serverPort 12000serverSocket socket(AF INET,SOCK rSocket.listen(1)print ‘The server is ready to receive’while True:connectionSocket, addr serverSocket.accept()sentence tence Socket Programming13

Socket Programming: Basics The server application must be running before theclient can send anything. The server must have a socket through which itsends and receives messages. The client also need asocket. Locally, a socket is identified by a port number. In order to send messages to the server, the clientneeds to know the IP address and the port numberof the server.Port number is analogous to an apartment number. All doors(sockets) lead into the building, but the client only has access toone of them, located at the provided number.CSci4211:Socket Programming14

Helpful Resources Python Socket Tutorial– https://docs.python.org/2/library/socket.html– https://docs.python.org/3.4/library/socket.html Java Socket Tutorial– ing/sockets/ Computer Networking: A Top-Down Approach, 7thEdition. Section 2.7CSci4211:Socket Programming15

Socket programming Two socket types for two transport services: UDP:unreliable datagram TCP:reliable, byte stream-oriented Application Example: 1.client reads a line of characters (data) from its keyboard and sends data to server 2.server receives the data and converts characters to uppercase 3.server sends modified data to client 4.client receives modified data and displays line on