7b) UDP Client-Server Communication (Ubuntu/Linux) Files: - server.cpp (UDP Server) - client.cpp (UDP Client) ------------------------------------------------------------ SERVER (server.cpp): #include #include #include #include using namespace std; int main() { int serverSocket = socket(AF_INET, SOCK_DGRAM, 0); sockaddr_in serverAddr{}; serverAddr.sin_family = AF_INET; serverAddr.sin_addr.s_addr = INADDR_ANY; serverAddr.sin_port = htons(5001); bind(serverSocket, (sockaddr*)&serverAddr, sizeof(serverAddr)); char buffer[1024]; sockaddr_in clientAddr; socklen_t clientAddrSize = sizeof(clientAddr); cout << "[+] UDP Server listening on port 5001..." << endl; while (true) { int bytesReceived = recvfrom(serverSocket, buffer, sizeof(buffer) - 1, 0, (sockaddr*)&clientAddr, &clientAddrSize); if (bytesReceived > 0) { buffer[bytesReceived] = '\0'; cout << "Message from client: " << buffer << endl; } } close(serverSocket); return 0; } ------------------------------------------------------------------- CLIENT (client.cpp): #include #include #include #include using namespace std; int main() { int clientSocket = socket(AF_INET, SOCK_DGRAM, 0); sockaddr_in serverAddr{}; serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(5001); serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); string message; cout << "Enter message to send: "; getline(cin, message); sendto(clientSocket, message.c_str(), message.length(), 0, (sockaddr*)&serverAddr, sizeof(serverAddr)); cout << "Message sent!" << endl; close(clientSocket); return 0; } ----------------------------------------------------------------- Terminal Command (Ubuntu): 1) g++ server.cpp -o server 2) ./server Terminal Command (Ubuntu): 1) g++ client.cpp -o client 2) ./client