Created a simple http client/server

unix_test
anulax1225 ago%!(EXTRA string=1 year)
parent 0ad9bedec5
commit 71c558d7bf
  1. 20
      sandbox/client/client.cpp
  2. 49
      sandbox/server/server.cpp

@ -2,25 +2,29 @@
using namespace Bk::Net;
void http_client();
int main()
{
http_client();
return 0;
}
void http_client()
{
log(dns_lookup("edus2.rpn.ch", IpVersion::IPv4)[0])
IpAddress ip("127.0.0.1");
Socket sock(ip, 9000, IpProtocol::TCP);
Socket sock(ip, 80, IpProtocol::TCP);
if(!sock.conn()) {
perror("Couldn't connect to the end point.");
exit(1);
}
Packet packet, meta;
std::string str("Hello world");
Packet packet;
std::string str("GET / HTTP/1.1\r\n\r\n");
packet.push<char>(str.c_str(), str.length());
meta.push<int>(packet.size());
sock.write(meta.payload);
sock.write(packet.payload);
return 0;
sock.send(packet.payload);
}

@ -2,28 +2,47 @@
using namespace Bk::Net;
void http_server();
std::string http_handle(Socket& sock, Connection conn);
int main()
{
IpAddress ip("127.0.0.1");
Socket sock(ip, 9000, IpProtocol::TCP);
bool running = sock.init() && sock.start(50);
http_server();
return 0;
}
while (running)
void http_server()
{
Connection conn;
if ((conn = sock.ack()) > 0)
IpAddress ip("127.0.0.1");
Socket sock(ip, 80, IpProtocol::TCP);
bool running = sock.init() && sock.start(5);
while (running)
{
log("New Connection")
Packet meta_data(sock.recv(conn, 4));
int length = meta_data.pull<int>();
if (length > 0)
Connection conn = sock.ack();
if (conn >= 0)
{
Packet data(sock.recv(conn, length + 2));
log(data.pull<char>(length).release());
log(http_handle(sock, conn));
}
close(conn);
}
}
return 0;
std::string http_handle(Socket& sock, Connection conn)
{
Packet req;
bool reading = true;
while(reading)
{
std::vector<char> raw_data;
raw_data = sock.recv(conn, 4);
reading = req.append_data(raw_data);
}
close(conn);
int req_size = req.size();
std::unique_ptr<char[]> req_test = req.pull<char>(req_size);
if (req_size) return std::string(req_test.release(), req_size);
return "";
}
Loading…
Cancel
Save