





Preview text:
principles of network P2P applications applications socket programming architectures with UDP and TCP requirements Web and HTTP FTP mail SMTP, POP3, IMAP Application Layer 2-93 communicate using sockets end-transport protocol application socket application control ed by transport transport network network control ed link link physical physical Application Layer 2-94 programming
keyboard and sends the data to the server. characters to uppercase. the line on its screen. Application Layer 2-95
v no handshaking before sending data port # to each packet
v rcvr extracts sender IP address and port# from received packet
UDP: transmitted data may be lost or received out-of-order
v UDP provides unreliable transfer of groups of bytes Application Layer 2-96 client clientSocket = socket(AF_INET,SOCK_DGRAM) socket(AF_INET,SOCK_DGRAM) read datagram from clientSocket Application 2-97 Python UDPClient include Python9s socket from socket import * library serverName = 8hostname9 serverPort = 12000 create UDP socket for
clientSocket = socket(socket.AF_INET, server socket.SOCK_DGRAM) get user keyboard input
message = raw_input(9Input lowercase sentence:9) Attach server name, port to message; send into socket
clientSocket.sendto(message,(serverName, serverPort)) read reply characters from
modifiedMessage, serverAddress = socket into string clientSocket.recvfrom(2048) print out received string print modifiedMessage and close socket clientSocket.close() Application Layer 2-98 Python UDPServer from socket import * serverPort = 12000 create UDP socket
serverSocket = socket(AF_INET, SOCK_DGRAM) bind socket to local port
serverSocket.bind((' , serverPort)) number 12000
print <The server is ready to receive= loop forever while 1: Read from UDP socket into
message, clientAddress = serverSocket.recvfrom(2048) message, getting client9s address (client IP and port)
modifiedMessage = message.upper() send upper case string
serverSocket.sendto(modifiedMessage, clientAddress) back to this client Application Layer 2-99 when contacted by client,
v server process must first be running for server process to communicate with that v server must have created socket (door) that particular client multiple clients source port numbers used Creating TCP socket, to distinguish clients (more in Chap 3) client TCP establishes connection to server TCP between client and server Application Layer 2-100 create socket, port=x, for incoming request: serverSocket = socket() wait for incoming create socket, connection request
connect to hostid, port=x
connectionSocket = connection setup clientSocket = socket() serverSocket.accept() send request using read request from clientSocket connectionSocket write reply to connectionSocket read reply from clientSocket close connectionSocket close clientSocket Application Layer 2-101 Example app:TCP client Python TCPClient from socket import * serverName = 9servername9 serverPort = 12000 create TCP socket for server, remote port 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
sentence = raw_input(8Input lowercase sentence:9) No need to attach server clientSocket.send(sentence) name, port
modifiedSentence = clientSocket.recv(1024)
print 8From Server:9, modifiedSentence clientSocket.close() Application Layer 2-102 Python TCPServer from socket import * serverPort = 12000 create TCP welcoming socket
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind((89,serverPort)) server begins listening for incoming TCP requests serverSocket.listen(1)
print 8The server is ready to receive9 loop forever while 1: server waits on accept()
connectionSocket, addr = serverSocket.accept() for incoming requests, new socket created on return
sentence = connectionSocket.recv(1024) read bytes from socket (but not address as in UDP)
capitalizedSentence = sentence.upper() close connection to this
connectionSocket.send(capitalizedSentence)
client (but not welcoming socket) connectionSocket.close() Application Layer 2-103