#include #include #include #include #include #include #define PORT 8080 #define BUFFER_SIZE 1024 // use this https://github.com/eminfedar/async-sockets-cpp/tree/master int main() { int server_fd, new_socket; struct sockaddr_in address; int opt = 1; int addrlen = sizeof(address); char buffer[BUFFER_SIZE] = {0}; std::ofstream file("received_example.txt", std::ios::binary); if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { std::cerr << "Socket failed" << std::endl; return 1; } if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) { std::cerr << "setsockopt" << std::endl; return 1; } address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(PORT); if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) { std::cerr << "Bind failed" << std::endl; return 1; } if (listen(server_fd, 3) < 0) { std::cerr << "Listen failed" << std::endl; return 1; } if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen)) < 0) { std::cerr << "Accept failed" << std::endl; return 1; } int valread; while ((valread = recv(new_socket, buffer, BUFFER_SIZE, 0)) > 0) { file.write(buffer, valread); } std::cout << "File received successfully" << std::endl; close(new_socket); close(server_fd); file.close(); return 0; }