//Funcion start int start_server(const u_short port, const char baseDir[]) { int serverSocket; int clientSocket; char clientIP[18]; u_int clientPort; int forkID; int localError; serverSocket = newTCPServerSocket4("0.0.0.0",port,5); if(serverSocket == -1) { return 1; } while(true) { bzero(clientIP,sizeof(clientIP)); clientPort = 0; debug(1,"%s","Waiting for a Client..."); clientSocket = waitConnection4(serverSocket,clientIP,&clientPort); if(clientSocket == -1) { debug(1,"%s","ERROR: Invalid Client Socket"); continue; } debug(2,"Connected Client %s:%u",clientIP,clientPort); forkID = fork(); if(forkID == 0) { //Hilo para trabajar con el Cliente start_protocol(clientSocket,baseDir); closeTCPSocket(clientSocket); debug(2,"Close connection (%s:%u)",clientIP,clientPort); } else if(forkID > 0) { //Hilo para trabajar con el Servidor closeTCPSocket(clientSocket); } else { //Debug del fork. localError = errno; debug(0,"ERROR, Cant Fork for Client %s",strerror(localError)); return 1; } } closeTCPSocket(serverSocket); return 0; }
int start_server(const char iface[], const u_short port, const u_short maxClients) { int serverSocket; int clientSocket; char clientIP[18]; u_int clientPort; int forkID; int localerror; serverSocket = newTCPServerSocket4(iface,port,maxClients); if(serverSocket == -1) { return 0; } while(1) { bzero(clientIP,sizeof(clientIP)); clientPort = 0; debug(1,"%s","Waiting for a Client..."); clientSocket = waitConnection4(serverSocket,clientIP,&clientPort); if(clientSocket == -1) { debug(1,"%s","ERROR: Invalid Client Socket"); continue; } debug(2,"Connected Client %s:%u",clientIP,clientPort); forkID = fork(); if(forkID == 0) { start_protocol(clientSocket); closeTCPSocket(clientSocket); debug(2,"Close connection (%s:%u)",clientIP,clientPort); } else if(forkID > 0) { closeTCPSocket(clientSocket); } else { localerror = errno; debug(0,"ERROR, Cant Fork for Client %s",strerror(localerror)); return 1; } } closeTCPSocket(serverSocket); return 1; }
int startServer(const unsigned int port) { int serverSocket; int clientSocket; char clientIP[16]; unsigned int clientPort; SSL_CTX *ctx; int pid; //Init SSL library SSL_library_init(); //Init SSL socket ctx = InitServerCTX(); //Load certificates LoadCertificates(ctx, "Certificates/cert.pem", "Certificates/key.pem"); serverSocket = newTCPServerSocket4("0.0.0.0",port,5); if(serverSocket == -1) { error(errno,"Can't create Socket"); return FALSE; } debug(4,"Server Socket Created"); while(TRUE) { clientSocket = waitConnection4(serverSocket,clientIP,&clientPort); if(clientSocket == -1) { debug(1,"%s","ERROR: Cannot get Client Socket"); continue; } debug(2,"Connected Client %s:%u",clientIP,clientPort); pid = fork(); if(pid == -1) { debug(0,"Can't Fork!"); close(clientSocket); continue; } else if(pid == 0 ) { //Create secure connection // Soy el Hijo. clientProccess(ctx, clientSocket); } else if (pid > 0 ) { // Soy el Padre close(clientSocket); } } return TRUE; }
int startServer(const unsigned int port) { int serverSocket; int clientSocket; char clientIP[16]; unsigned int clientPort; int pid; serverSocket = newTCPServerSocket4("127.0.0.1",port,5); if(serverSocket == -1) { error(errno,"Can't create Socket"); return FALSE; } debug(4,"Server Socket Created"); while(TRUE) { clientSocket = waitConnection4(serverSocket,clientIP,&clientPort); debug(2,"Connected Client %s:%u",clientIP,clientPort); pid = fork(); if(pid == -1) { debug(0,"Can't Fork!"); close(clientSocket); continue; } else if(pid == 0 ) { // Soy el Hijo. clientProccess(clientSocket); } else if (pid > 0 ) { // Soy el Padre close(clientSocket); } } return TRUE; }
//Funcion start int start_server(const u_short port, const char baseDir[]) { int serverSocket; int clientSocket; char clientIP[18]; u_int clientPort; int forkID; int localError; pid_t pid; if ((pid = fork()) == 0) { int sockfd; struct sockaddr_in servaddr, cliaddr; sockfd = socket(AF_INET, SOCK_DGRAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(PORT); bind(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)); dg_echo(sockfd, (struct sockaddr *) &cliaddr, sizeof(cliaddr)); exit(0); } serverSocket = newTCPServerSocket4("0.0.0.0", 5001, 5); if(serverSocket == -1) { return 1; } while(true) { bzero(clientIP,sizeof(clientIP)); clientPort = 0; debug(1,"%s","Waiting for a Client..."); clientSocket = waitConnection4(serverSocket,clientIP,&clientPort); if(clientSocket == -1) { debug(1,"%s","ERROR: Invalid Client Socket"); continue; } debug(2,"Connected Client %s:%u",clientIP,clientPort); forkID = fork(); if(forkID == 0) { //Hilo para trabajar con el Cliente start_protocol(clientSocket,baseDir); closeTCPSocket(clientSocket); debug(2,"Close connection (%s:%u)",clientIP,clientPort); } else if(forkID > 0) { //Hilo para trabajar con el Servidor closeTCPSocket(clientSocket); } else { //Debug del fork. localError = errno; debug(0,"ERROR, Cant Fork for Client %s",strerror(localError)); return 1; } } closeTCPSocket(serverSocket); return 0; }
int start_server(const char iface[], const u_short port, const u_short maxClients, const char *filename) { int serverSocket; int clientSocket; char clientIP[18]; u_int clientPort; int file; int localerror; int readBytes = 0; int totalReadBytes = 0; int totalWriteBytes = 0; int writeBytes = 0; char *readBuffer = NULL; debug(2,"Trabajado en %s:%i",iface,port); serverSocket = newTCPServerSocket4(iface,port,maxClients); if(serverSocket == -1) { return false; } if((file = open(filename,O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP)) == -1) { localerror = errno; //fprintf(stderr,"Can't open filename (%s)",strerror(localerror)); return false; } bzero(clientIP,sizeof(clientIP)); clientPort = 0; debug(5,"%s","Waiting for a Client..."); clientSocket = waitConnection4(serverSocket,clientIP,&clientPort); debug(4,"Connected Client %s:%u",clientIP,clientPort); readBuffer = (char *) calloc(1,BUFFERSIZE); while((readBytes = read(clientSocket,readBuffer,BUFFERSIZE)) > 0) { debug(5,"\tSe leyeron de %s:%u %u bytes",clientIP,clientPort,readBytes); totalWriteBytes = 0; while(totalWriteBytes < readBytes) { writeBytes = write(file,readBuffer+totalWriteBytes,readBytes-totalWriteBytes); totalWriteBytes += writeBytes; } totalReadBytes += readBytes; } debug(3,"\t Se leyeron un total de %i de bytes\n",totalReadBytes); free(readBuffer); close(file); closeTCPSocket(clientSocket); debug(4,"Close connection (%s:%u)",clientIP,clientPort); closeTCPSocket(serverSocket); return true; }