Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.