Top Banner
Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions
33

Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

Dec 24, 2015

Download

Documents

Prudence Harvey
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

Client Software Design

Objectives:Understand principles of C/S design, with

focus on clients

Review Windows implementations of Socket functions

Page 2: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 2

Architectural Objectives for C/S

• Partition applications across multiple machines– better utilization of computing resources

• Place user interaction portion of application closer to the user (client)– Better utilization of network bandwidth.

• Share server resources among many clients– Improve efficiency / utilization of resources– Synchronize use of shared resources– Control / manage access to shared resources

Page 3: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 3

C/S Architecture

Application

Client Server

Page 4: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 4

Example C/S Applications

• File Servers– C/S application used to locate and retrieve remote

files

• Database Applications– C/S used to present database queries to remote db

• Groupware– C/S used to share messages among group members

• Web Server– C/S used to query web server for web site

information, pages.

Page 5: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 5

2-Tier vs. 3-Tier C/S Design

• 3-Tier design extends distribution of application across more levels / platforms.

• ClientLocal Server Enterprise ServerLocal Database Enterprise

DatabaseApp. Server Database Server

Page 6: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 6

Client Software Design Issues

• Identifying Server Location– Command Line Argument– User query – Embedded (fixed) server ID

• Parsing Address Argument– domain name vs. IP address format

• Look up domain name– hptr = gethostbyname( example_name)– IP addr in hptr --> h_addr;

• Network byte order vs. local byte order

Page 7: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 7

TCP Client Algorithm

• Find IP address and port number of server

• Allocate a socket

• Allow TCP to choose an arbitrary, unused local port

• Connect the socket to the server

• Communicate with server (application level)

• Close connection

Page 8: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 8

TCP Client Algorithm Issues

• Chose a local Port number– allow connect to select port– [could use bind ( ) if needed]

• Identify local IP address– allow connect to specify local IP address– use gethostname ( )– use gethostbyname ( )

Page 9: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 9

TCP Client Algorithm Issues

• Client / Server Communications– request / response interaction– write / read (send / recv)

• Single write may require multiple reads– response may be segmented– continue appending reads until return length =

0

Page 10: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 10

TCP Client Algorithm Issues

• Connection may not be certain when all information or requests have been transferred

• Partial close allows graceful termination– shutdown ( s, direction)– 0 = no input, 1 = no further output, 2 = both directions– Sends an EOF to Server– When server has completed transmission, it shuts

down and then closes socket.

Page 11: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 11

TCP Receive Completion

• Protocol may fragment transmitted packet, but does not directly support any way for the application to determine when the full packet has been received.

• Therefore, application needs to provide a mechanism to identify when all segments of the packet have been received.

Page 12: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 12

Reception Complete Methods

• Predetermine packet size. Reception is complete when the predetermined number of bytes have been received.– All messages are a fixed size– Each message is of a predetermined size

• Terminate each packet with a sentinel character• Follow each packet with a packet of 0 bytes• etc.

Page 13: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 13

UDP Client Algorithm

• Find IP addr and port number of server• Allocate a socket• Allow UDP to choose an arbitrary, unused local

port• Specify Server for messages• Communicate with server (application level)• Close socket

Page 14: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 14

UDP Client Algorithm Issues

• UDP Basic communication Modes– Connected: use aconnect call to specify remote

server. then use read/write to communicate– Unconnected: specify server address with each

message

• UDP transfers entire message in a single call. – (assumes buffer space and transport are sufficient)– partial close provides no intersocket communications– UDP is UNRELIABLE! App must be able to deal with

inconsistent results.

Page 15: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 15

Windows Sockets Introduction

• History

• Shared Functions

• Protocol Specific Functions

• Socket Database Routines

Page 16: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 16

Windows SocketsWinsock 1.1

• First formal specification developed in 1992 through an industry task force

• Winsock 1.1 finalized 1993.

• Intended to facilitate porting BSD socket code to Windows environment

• Supports both 16 bit and 32 bit operating environments (Windows 3.0 and up).

Page 17: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 17

Windows Sockets

• Actual implementations are system or machine dependent– All implementations should support winsock.h– Implementation support provided through

winsock.dll

Page 18: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 18

Windows Sockets

• Negotiate for appropriate winsock support

• retvalue = WSAStartup (WORD version, WSADATA SocketImp)– version = The highest version of sockets that

the app can use.– SocketImp = data structure containing info on

the available socket implementations– retvalue = 0 or error

Page 19: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 19

Windows Sockets

• Close down access to socket implementation

• retvalue = WSACleanup ( void);– retvalue = 0 or SOCKET_ERROR

Page 20: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 20

Windows SocketsCommon Socket Routines

• retval = inet_addr ( dotted )– dotted = string with IP address in dotted

decimal form– retval = unsigned long with IP addr in binary

form or INADDR_NONE if not valid

• retval = inet_ntoa ( ipaddr )– ipaddr = struct in_addr with IP addr info– retval = string with IP address indotted

decimal form

Page 21: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 21

Windows Sockets Common Socket Routines

• htonl ( ); htons ( );

• ntohl ( ); ntohs ( );

• socket ( );

• bind ( );

• connect ( );

• select ( );

• closesocket ( );

• shutdown ( );

Page 22: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 22

Windows Sockets Common Socket Routines

• retvalue = ntohl(netlong);– converts unsigned long from network format to local– (IP Address)

• retvalue = ntohs(netshort);– converts unsigned short from network format to local– (Port Number)

• retvalue = htonl(hostlong);– converts unsigned long from local format to network

• retvalue = htons(hostshort);– converts unsigned short from local format to network

Page 23: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 23

Windows Sockets Common Socket Routines

• retvalue = socket (family, type, protocol);– retvalue = socket descriptor or INVALID_SOCKET

(use WSAGetLastError() to retrieve error code)– family = protocol family (PF_INET for IP)– type = (service type: SOCK_STREAM for TCP,

SOCK_DGRAM for UDP)– protocol = protocol number or use 0 to match type

Page 24: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 24

Windows Sockets Common Socket Routines

• retvalue = bind (socket, localaddr, addrlen);– retvalue = 0 for success or SOCKET_ERROR– socket = socket to be bound to a port– localaddr = sockaddr struct for local binding address– addrlen = length of localaddr

• retvalue = connect (socket, addr, addrlen)– retvalue = 0 for success or SOCKET_ERROR– socket = local socket to be used for connection– addr = sockaddr struct for remote binding address– addrlen = length of addr

Page 25: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 25

Windows Sockets Common Socket Routines

• retvalue = select (ignore, refds, wefds, exfds, time);– Will be explained later…….

• retvalue = closesocket (socket);– retvalue = 0 or SOCKET_ERROR

– socket = socket to be closed;

• retvalue = shutdown ( socket, how);– retvalue = 0 or SOCKET_ERROR;

– socket = socket to be shutdown;

– how = 0 (incoming), 1 (outgoing), 2 (both directions)

Page 26: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 26

Windows Sockets Protocol Specific Functions

TCP UDPaccept ( ); recvfrom( );

listen ( ); sendto ( );

recv ( );

send ( );

Page 27: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 27

TCP Connection-OrientedCommunications

• retvalue = listen (socket, queuelen);– retvalue = 0 / SOCKETT_ERROR– socket = socket being monitored– queuelen = incoming request queue size

• retvalue = accept (socket, addr, addrlen);– retvalue = socket descriptor assigned to new connection– socket = incoming socket being monitored– addr = struct sockaddr that is filled in with incoming

address information– addrlen = length of address structure

Page 28: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 28

TCP Connection-OrientedCommunications

• retvalue = recv (socket, buffer, length, flags);

– retvalue = # of bytes received, or 0 if connection is closed, or SOCKET_ERROR if an error occurred

– socket = socket used for incoming message– buffer = place where incoming message is stored– length = length of buffer– flags = control type info....

Page 29: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 29

TCP Connection-OrientedCommunications

• retvalue = send (socket, msg, msglen, flags);

– retvalue = # of bytes sent, or SOCKET_ERROR if an error occurred

– socket = socket used for outgoing message– msg = pointer to outgoing message– msglen = length of message– flags = control type info....

Page 30: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 30

UDP Connectionless Communications

• ret = recvfrom (socket, buf, buflen, flags, from,

fromlen);

SOCKET socket = client socket

char FAR* buf = buffer to receive incoming msg

int buflen = size of buffer

int flags = control bits (OOB data, etc.)

struct sockaddr FAR* from = server address

int fromlen = size of address structure

Page 31: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 31

UDP Connectionless Communications

• ret = sendto ( socket, msg, msglen, flags, to, tolen);

SOCKET socket = client socket descriptor

const char FAR* msg = message for server

int mesglen = length of message

int flags = control flags (OOB data, etc.)

const struct sockaddr FAR* to = server address

int tolen = length of address structure

Page 32: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 32

Windows Socketsdatabase routines

• gethostbyaddr ( );– Returns primary Domain Name for given IP address

• gethostbyname ( );– Returns primary IP address for given Domain Name

• gethostname ( );– Returns localhost domain name

• getprotobyname ( );– Returns protocol number for given protocol name

• getservbyname ( );– Returns well-known port number for given well-known

port name

Page 33: Client Software Design Objectives: Understand principles of C/S design, with focus on clients Review Windows implementations of Socket functions.

CS431-cotter 33

Summary

• Foundations for Client / Server Programming

• Client Side Design Principles

• Windows Sockets Introduction

• Windows Sockets Functions