Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 06. UDP Server/Client.

Similar presentations


Presentation on theme: "Chapter 06. UDP Server/Client."— Presentation transcript:

1 Chapter 06. UDP Server/Client

2 Understanding the basic structure and principle of UDP server/client
Goal Understanding the basic structure and principle of UDP server/client Learning socket system calls for UDP application Understanding broadcasting concept and UDP based implementation

3 Similarity of TCP and UDP
Addressing based on port number Checking data error

4 Differences between TCP and UDP
item TCP UDP connection-oriented protocol - Data comm. after connection setup Connectionless protocol - Data comm. without connection - byte-stream service - Datagram service Reliable data transfer - By data retransmission Unreliable data transfer - No data retransmission unicast Unicast, Broadcast, Multicast

5 UDP server/client operation (1/2)

6 UDP server/client operation (2/2)
UDP server/client operation (cont’d) UDP server UDP server . . . Comm. Comm. UDP client #1 UDP client #2 UDP client #1 . . . UDP client #n

7 UDP server/client example
Code example UDP client UDP server fgets() sendto() printf() recvfrom()

8 UDP server/client analysis (1/4)
UDP/IP Socket requires three components ① protocol Defined by Socket() system call ② local IP address and port number Server or client side ③ remote IP address and port number

9 UDP server/client analysis (2/4)
Socket data structure server Local IP addr Local port num Remote IP addr Remote port num client application OS network • • • Recvfrom buffer Sendto buffer

10 UDP server/client analysis (3/4)
UDP server/client structure ① socket() bind() recvfrom() sendto() closesocket() UDP server UDP client network

11 UDP server/client analysis (4/4)
UDP server/client structure ② (Ignore!!) socket() bind() recvfrom() sendto() closesocket() send() recv() UDP server UDP client network connect()

12 data transfer system call (1/4)
sendto() send application data to peer side int sendto ( SOCKET s, const char* buf, int len, int flags, const struct sockaddr* to, int tolen ) ; success: num. of bytes sent, fail: SOCKET_ERROR

13 data transfer system call (2/4)
sendto() example // initialize socket address structure to receiver address SOCKADDR_IN serveraddr; ... // declare buffer for sending data char buf[BUFSIZE]; // store sending data to buffer // data sending. retval = sendto(sock, buf, strlen(buf), 0, (SOCKADDR *)&serveraddr, sizeof(serveraddr)); if(retval == SOCKET_ERROR) error handling; printf("%d bytes sent...\n", retval);

14 data transfer system call (3/4)
recvfrom() Data receving from peer side int recvfrom ( SOCKET s, char* buf, int len, int flags, struct sockaddr* from, int* fromlen ) ; success: num. of bytes sent, fail: SOCKET_ERROR

15 data transfer system call (4/4)
recvfrom() example // initialize socket address structure to sender address SOCKADDR_IN peeraddr; int addrlen; // declare buffer for received data char buf[BUFSIZE]; // data receiving addrlen = sizeof(peeraddr); retval = recvfrom(sock, buf, BUFSIZE, 0, (SOCKADDR *)&peeraddr, &addrlen); if(retval == SOCKET_ERROR) error handling; printf("%d bytes received...\n", retval);

16 Communication types broadcasting (1/6) unicasting broadcasting
multicasting

17 Broadcasting principle
sender

18 Procedure to send broadcast data
broadcasting (3/6) Procedure to send broadcast data ① Enable broadcast option for a socket BOOL bEnable = TRUE; retval = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&bEnable, sizeof(bEnable)); if(retval == SOCKET_ERROR) err_quit("setsockopt()");

19 Procedure to send broadcast data (cont’d)
broadcasting (4/6) Procedure to send broadcast data (cont’d) ② Sending data to broadcast address // initialize socket address structure SOCKADDR_IN remoteaddr; ZeroMemory(&remoteaddr, sizeof(remoteaddr)); remoteaddr.sin_family = AF_INET; remoteaddr.sin_port = htons(9000); remoteaddr.sin_addr.s_addr = htonl(INADDR_BROADCAST); // store data to buffer char buf[BUFSIZE]; ... // sending data. retval = sendto(sock, buf, strlen(buf), 0, (SOCKADDR *)&remoteaddr, sizeof(remoteaddr)); if(retval == SOCKET_ERROR) error handling; printf("%d bytes sent….\n", retval);

20 Broadcast address broadcasting (5/6) host ID
network ID Network-directed broadcast local broadcast subnet-directed broadcast subnet ID

21 Network-directed broadcast
broadcasting (6/6) Broadcast address (cont’d) BroadcastSender.cpp, BroadcastReceiver.cpp router Network-directed broadcast router Local broadcast


Download ppt "Chapter 06. UDP Server/Client."

Similar presentations


Ads by Google