#include #include #include #include #include #include #include #include #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; }