Skip to content

MrMuffinss/MrMuffinss.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

#include #include #include <boost/asio.hpp>

using namespace std; using namespace boost::asio;

class Server { public: Server(io_service& ios, int port) : acceptor(ios, ip::tcp::endpoint(ip::tcp::v4(), port)), socket(ios) { startAccept(); }

private: void startAccept() { acceptor.async_accept(socket, [this](const boost::system::error_code& ec) { if (!ec) { handleRequest(); } startAccept(); }); }

void handleRequest() {
    boost::system::error_code ec;
    streambuf request;
    read_until(socket, request, "\r\n\r\n", ec);

    if (!ec) {
        istream request_stream(&request);
        string header;
        getline(request_stream, header);

        // Simple check for a GET request
        if (header.find("GET") == 0) {
            sendResponse();
        }
    }
}

void sendResponse() {
    string response = "HTTP/1.1 200 OK\r\nContent-Length: 13\r\n\r\nHello, World!";
    write(socket, buffer(response));
}

ip::tcp::acceptor acceptor;
ip::tcp::socket socket;

};

int main() { try { io_service ios; Server server(ios, 8080); ios.run(); } catch (exception& e) { cerr << "Exception: " << e.what() << endl; }

return 0;

}