Integrate client as variable in server class
This commit is contained in:
		
							parent
							
								
									b6468bd148
								
							
						
					
					
						commit
						1f82e94296
					
				@ -15,6 +15,11 @@
 | 
			
		||||
 | 
			
		||||
using namespace std;
 | 
			
		||||
 | 
			
		||||
class client;
 | 
			
		||||
// class secure;
 | 
			
		||||
// class server;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Server klasa za TCP/IP soket
 | 
			
		||||
 * Instanca se incijalizira kada pokrećemo server
 | 
			
		||||
@ -24,13 +29,14 @@ class server {
 | 
			
		||||
    public:
 | 
			
		||||
    int sock;
 | 
			
		||||
    struct sockaddr_in addr;
 | 
			
		||||
    SSL_CTX* securefds = NULL;
 | 
			
		||||
 | 
			
		||||
    server (const ushort port, const uint limit = 1000);
 | 
			
		||||
    server (const ushort port, const uint limit = 1000, SSL_CTX* _securefds = NULL);
 | 
			
		||||
    ~server ();
 | 
			
		||||
 | 
			
		||||
    // dok god živi server žive i klijenti - klijetni moraju biti dio servera
 | 
			
		||||
    // omogućiti enkripciju i na nivou servera
 | 
			
		||||
 | 
			
		||||
    // one klijent
 | 
			
		||||
    client* cli;
 | 
			
		||||
    void accept(const uint timeout = 100);   
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -60,6 +66,8 @@ class client {
 | 
			
		||||
    int conn; // mijenja sock
 | 
			
		||||
    struct sockaddr_in addr;
 | 
			
		||||
    SSL* ssl = NULL;
 | 
			
		||||
    // server s klijentima
 | 
			
		||||
    const server* srv;
 | 
			
		||||
    // klijent sa serverom
 | 
			
		||||
    string ipv4;
 | 
			
		||||
    string ipv6;
 | 
			
		||||
 | 
			
		||||
@ -4,7 +4,8 @@
 | 
			
		||||
 * Kontrustruktor varijable tipa server, prima port i limit za ograničenje liste klijenata na čekanju
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
server::server (const ushort port, const uint limit) {
 | 
			
		||||
server::server (const ushort port, const uint limit, SSL_CTX* _securefds) {
 | 
			
		||||
    securefds = _securefds;
 | 
			
		||||
 | 
			
		||||
    addr.sin_family = AF_INET;
 | 
			
		||||
    addr.sin_addr.s_addr = INADDR_ANY;
 | 
			
		||||
@ -31,6 +32,10 @@ server::server (const ushort port, const uint limit) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void server::accept(const uint timeout) {
 | 
			
		||||
    cli = new client(this, timeout, securefds);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Destruktor varijable tipa server
 | 
			
		||||
*/
 | 
			
		||||
@ -38,6 +43,9 @@ server::server (const ushort port, const uint limit) {
 | 
			
		||||
 | 
			
		||||
server::~server () {
 | 
			
		||||
 | 
			
		||||
    cli->~client();
 | 
			
		||||
    cli = NULL;
 | 
			
		||||
 | 
			
		||||
    if (sock<=0) {
 | 
			
		||||
        throw string("[ERROR] The socket is already closed "); 
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								test/client.o
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								test/client.o
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@ -6,21 +6,26 @@ using namespace std;
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
    try{
 | 
			
		||||
        cout << "init server " << endl;
 | 
			
		||||
        server myserver(5000);
 | 
			
		||||
        cout << "init cert " << endl;
 | 
			
		||||
        secure crypto ("../example/cert.pem", "../example/privkey.pem");
 | 
			
		||||
        cout << "init server " << endl;
 | 
			
		||||
        server myserver(5000, 100, crypto.fds);
 | 
			
		||||
        
 | 
			
		||||
        cout << "init client " << endl;
 | 
			
		||||
 | 
			
		||||
        client myclient(&myserver, 100, crypto.fds);
 | 
			
		||||
        // client myclient(&myserver, 100, crypto.fds);
 | 
			
		||||
        // comming myclient(&myserver, 100);
 | 
			
		||||
        cout << "wait client " << myclient.ipv4 << endl;
 | 
			
		||||
        myserver.accept();
 | 
			
		||||
        // cout << "wait client " << myclient.ipv4 << endl;
 | 
			
		||||
        cout << "wait client " << myserver.cli->ipv4 << endl;
 | 
			
		||||
 | 
			
		||||
        string fromclient =  myclient.pull();
 | 
			
		||||
        string fromclient =  myserver.cli->pull();
 | 
			
		||||
        // string fromclient =  myclient.pull();
 | 
			
		||||
        cout << "tell client " << fromclient << endl;
 | 
			
		||||
        // usleep(600*1000);
 | 
			
		||||
        sleep(5);
 | 
			
		||||
        myclient.push(fromclient);
 | 
			
		||||
        myserver.cli->push(fromclient);
 | 
			
		||||
        // myclient.push(fromclient);
 | 
			
		||||
        // myclient.~comming();
 | 
			
		||||
 | 
			
		||||
        // while (true) {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								test/server.o
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								test/server.o
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user