Created
April 9, 2026 20:29
-
-
Save XoLinA/225fdb42d022ace656ef84e1d96eea5c to your computer and use it in GitHub Desktop.
Menu
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <winsock2.h> | |
| #include <ws2tcpip.h> | |
| #include <iostream> | |
| #include <string> | |
| #pragma comment(lib, "Ws2_32.lib") | |
| #define PORT 54000 | |
| #define SERVER_IP "127.0.0.1" | |
| #define BUF_SIZE 1024 | |
| using namespace std; | |
| int main() { | |
| WSADATA wsa; | |
| WSAStartup(MAKEWORD(2, 2), &wsa); | |
| SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0); | |
| sockaddr_in serverAddr; | |
| serverAddr.sin_family = AF_INET; | |
| serverAddr.sin_port = htons(PORT); | |
| inet_pton(AF_INET, SERVER_IP, &serverAddr.sin_addr); | |
| cout << "Menu: Burger, Pizza, Salad, Soup\n"; | |
| string dish; | |
| cout << "Enter your order: "; | |
| getline(cin, dish); | |
| sendto(sock, dish.c_str(), dish.size(), 0,(sockaddr*)&serverAddr, sizeof(serverAddr)); | |
| char buffer[BUF_SIZE]; | |
| sockaddr_in from; | |
| int fromLen = sizeof(from); | |
| int bytes = recvfrom(sock, buffer, BUF_SIZE, 0,(sockaddr*)&from, &fromLen); | |
| if (bytes > 0) | |
| { | |
| buffer[bytes] = '\0'; | |
| cout << buffer << endl; | |
| } | |
| closesocket(sock); | |
| WSACleanup(); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <winsock2.h> | |
| #include <ws2tcpip.h> | |
| #include <iostream> | |
| #include <queue> | |
| #include <thread> | |
| #include <chrono> | |
| #include <ctime> | |
| #pragma comment(lib, "Ws2_32.lib") | |
| #define PORT 54000 | |
| #define BUF_SIZE 1024 | |
| using namespace std; | |
| struct Order | |
| { | |
| string dish; | |
| sockaddr_in clientAddr; | |
| int addrLen; | |
| time_t orderTime; | |
| }; | |
| queue<Order> orderQueue; | |
| struct Dish | |
| { | |
| string name; | |
| int cookTime; | |
| }; | |
| vector<Dish> menu = | |
| { | |
| {"Burger", 2},{"Pizza", 5},{"Salad", 1},{"Soup", 2} | |
| }; | |
| int getCookTime(string dish) | |
| { | |
| for (auto& d : menu) | |
| if (d.name == dish) | |
| return d.cookTime; | |
| return 2; | |
| } | |
| void cookOrders(SOCKET sock) | |
| { | |
| while (true) | |
| { | |
| if (!orderQueue.empty()) | |
| { | |
| Order order = orderQueue.front(); | |
| orderQueue.pop(); | |
| int cookTime = getCookTime(order.dish); | |
| cout << "[COOKING] " << order.dish << endl; | |
| this_thread::sleep_for(chrono::seconds(cookTime)); | |
| time_t now = time(0); | |
| int waitTime = now - order.orderTime; | |
| string msg = "Your food is ready, enjoy!"; | |
| sendto(sock, msg.c_str(), msg.size(), 0,(sockaddr*)&order.clientAddr, order.addrLen); | |
| cout << "[DONE] " << order.dish<< " | Wait time: " << waitTime << " sec\n"; | |
| } | |
| } | |
| } | |
| int main() { | |
| WSADATA wsa; | |
| WSAStartup(MAKEWORD(2, 2), &wsa); | |
| SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0); | |
| sockaddr_in serverAddr; | |
| serverAddr.sin_family = AF_INET; | |
| serverAddr.sin_port = htons(PORT); | |
| serverAddr.sin_addr.s_addr = INADDR_ANY; | |
| bind(sock, (sockaddr*)&serverAddr, sizeof(serverAddr)); | |
| thread cookThread(cookOrders, sock); | |
| char buffer[BUF_SIZE]; | |
| while (true) | |
| { | |
| sockaddr_in clientAddr; | |
| int addrLen = sizeof(clientAddr); | |
| int bytes = recvfrom(sock, buffer, BUF_SIZE, 0,(sockaddr*)&clientAddr, &addrLen); | |
| if (bytes > 0) | |
| { | |
| buffer[bytes] = '\0'; | |
| string dish = buffer; | |
| cout << "[ORDER RECEIVED] " << dish << endl; | |
| Order order; | |
| order.dish = dish; | |
| order.clientAddr = clientAddr; | |
| order.addrLen = addrLen; | |
| order.orderTime = time(0); | |
| orderQueue.push(order); | |
| } | |
| } | |
| closesocket(sock); | |
| WSACleanup(); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment