Skip to content

Commit 652dc80

Browse files
committed
up: fix the gitignore and commit rest files
1 parent f40a827 commit 652dc80

File tree

7 files changed

+133
-2
lines changed

7 files changed

+133
-2
lines changed

.gitignore

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +0,0 @@
1-
socket
2-
server

networking/server/_server_lib.hpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#ifndef server_lib_hpp
2+
#define server_lib_hpp
3+
4+
#include "test_server.hpp"
5+
#include "server.hpp"
6+
7+
#endif

networking/server/server.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#include "server.hpp"
2+
3+
AD::Server::Server(
4+
int domain, int service, int protocol, int port, u_long interface, int backlog
5+
)
6+
{
7+
// creating a listener socket
8+
socket = new ListeningSocket(
9+
domain, service, protocol, port,
10+
interface, backlog
11+
);
12+
13+
// caution: can lead to memoery leak if you reassign socket memeber variable
14+
}
15+
16+
AD::ListeningSocket* AD::Server::getSocket()
17+
{
18+
return socket;
19+
}

networking/server/server.hpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#ifndef server_hpp
2+
#define server_hpp
3+
4+
#include "../socket/_socket_lib.hpp"
5+
6+
namespace AD
7+
{
8+
class Server
9+
{
10+
private:
11+
ListeningSocket *socket;
12+
virtual void acceptor() = 0;
13+
virtual void handler() = 0;
14+
virtual void responder() = 0;
15+
16+
public:
17+
Server(
18+
int domain, int service, int protocol, int port, u_long interface, int backlog
19+
);
20+
virtual void launch() = 0;
21+
ListeningSocket* getSocket();
22+
23+
};
24+
}
25+
26+
#endif

networking/server/test_server.cpp

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#include <stdio.h>
2+
#include <unistd.h>
3+
#include <iostream>
4+
5+
#include "test_server.hpp"
6+
7+
void AD::TestServer::acceptor()
8+
{
9+
auto address = Server::getSocket()->get_address();
10+
auto socket = Server::getSocket()->get_socket();
11+
int addrlen = sizeof(address);
12+
13+
new_socket = accept(socket, (struct sockaddr *)&address, (socklen_t *)&addrlen);
14+
15+
read(new_socket, buffer, 30000);
16+
}
17+
18+
void AD::TestServer::handler()
19+
{
20+
std::cout << buffer << std::endl;
21+
}
22+
23+
void AD::TestServer::responder()
24+
{
25+
char *hello = "Hello from server";
26+
write(new_socket, hello, strlen(hello));
27+
close(new_socket);
28+
}
29+
30+
AD::TestServer::TestServer(): AD::Server
31+
(
32+
AF_INET, SOCK_STREAM, 0, 80, INADDR_ANY, 10
33+
)
34+
{
35+
launch();
36+
}
37+
38+
void AD::TestServer::launch()
39+
{
40+
while(true) {
41+
std::cout << "Waiting" << std::endl;
42+
acceptor();
43+
handler();
44+
responder();
45+
std::cout << "Done" << std::endl;
46+
47+
}
48+
}

networking/server/test_server.hpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#ifndef test_server_hpp
2+
#define test_server_hpp
3+
4+
#include <stdio.h>
5+
#include "server.hpp"
6+
7+
namespace AD
8+
{
9+
class TestServer: public Server
10+
{
11+
private:
12+
char buffer[30000] = {0};
13+
int new_socket;
14+
15+
void acceptor();
16+
void handler();
17+
void responder();
18+
19+
public:
20+
TestServer();
21+
void launch();
22+
};
23+
}
24+
25+
#endif

networking/socket/_socket_lib.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#ifndef _socket_lib_hpp
2+
#define _socket_lib_hpp
3+
4+
#include "socket.hpp"
5+
#include "binding_socket.hpp"
6+
#include "listening_socket.hpp"
7+
8+
#endif

0 commit comments

Comments
 (0)