Dice / Network / Sockets / server.cpp
server.cpp
Raw
#include <iostream>
#include <vector>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <cstring>
#include <winsock2.h>
#include <ws2tcpip.h>

#include "server.hpp"

using namespace std;

#define PORT 8080


HDE::server::server(int domain, int service, int protocol, u_long IP){
   
    //defines address structure
    address.sin_family = domain;
    address.sin_port = htons(PORT);
    address.sin_addr.s_addr = htonl(IP);
  sock = socket(domain,service,protocol);
  test_connection(sock);
}

void HDE::server::test_connection(int item_to_test){

	if(item_to_test < 0){
		perror("failed to connect...");
		exit(EXIT_FAILURE);
	}

}

struct sockaddr_in HDE::server::get_address(){
return address;
}

int HDE::server::get_sock(){
	return sock;
}

int HDE::server::get_connection(){
	return connection;
}
void HDE::server::set_connection (int conn){
connection = conn;
}



int main(int argc, char const *argv[]){

 int server_fd, new_socket; long valread;
	    struct sockaddr_in address;// address of the server
	    int addrlen = sizeof(address); // collects the address length
        char *hello = "Hello from server";

        if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0)// Collects a socket error
	    {
	        perror("In socket");
	        exit(EXIT_FAILURE);
	    }

        //Gets the address and port
        address.sin_family = AF_INET;
        address.sin_addr.s_addr = INADDR_ANY;
        address.sin_port = htons( PORT );
        

        	    memset(address.sin_zero, '\0', sizeof address.sin_zero);
	    
	    
	    if (bind(server_fd, (struct sockaddr *)&address, sizeof(address))<0)
	    {
	        perror("In bind");
	        exit(EXIT_FAILURE);
	    }
	    if (listen(server_fd, 10) < 0)//listens for client
	    {
	        perror("In listen");
	        exit(EXIT_FAILURE);
	    }
	    while(1)
	    {
	        printf("\n+++++++ Waiting for new connection ++++++++\n\n");
	        if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen))<0)// connected with client
	        {
	            perror("In accept");
	            exit(EXIT_FAILURE);
	        }
	        
	        char buffer[30000] = {0};
	        valread = read( new_socket , buffer, 30000);
	        printf("%s\n",buffer );
	        write(new_socket , hello , strlen(hello));
	        printf("------------------Hello message sent-------------------\n");
	        close(new_socket);
	    }
	    return 0;


}