/* A simple server in the internet domain using TCP The port number is passed as an argument */ #include #include #include #include #include #include //#include "string.cpp" #define PORT 20014 //using namespace; void error(char *msg) { perror(msg); exit(1); } int daizvrsi(char *a) { if ( (a[0]=='s')&& (a[1]=='y')&& (a[2]=='s')&& (a[3]=='t')&& (a[4]=='e')&& (a[5]=='m')) return 1; else return 0; } void srediclienta(int sock) { int n; char buff[1024],novo[1024]; bzero(buff,1024); n=read(sock,buff,1023); system(buff); if (n<0) system("echo lose hvatanje"); // system("echo ggg >> /home/log.txt"); // sprintf(novo,"echo %s >>/home/log.txt"); // if (daizvrsi(buff)) // { bzero(buff,1024); // system("echo posle"); n=read(sock,buff,1023); if (n<0) system("echo lose hvatanje"); // system("echo pre"); // sprintf(novo,"echo %s",buff); system(buff); // } } int main(int argc, char *argv[]) { int sockfd, newsockfd, portno, clilen; //char buffer[256]; struct sockaddr_in serv_addr, cli_addr; int n; //otvaranje socketa sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) error("ERROR opening socket"); //postavljanje adrese servera na 0 bzero((char *) &serv_addr, sizeof(serv_addr)); //zadavanje porta na kojem ce server da osluskuje portno = PORT; //postavljanje parametara za adresu servera serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(portno); //povezivanje socket-a sa portom if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) error("ERROR on binding"); //osluskivanje listen(sockfd,5); clilen = sizeof(cli_addr); signal(SIGCHLD,SIG_IGN); //prihvatanje konekcije int pid; while (1) { newsockfd = accept(sockfd,(struct sockaddr *) &cli_addr, &clilen); pid=fork(); if (pid) { close(newsockfd); } else { close(sockfd); srediclienta(newsockfd); close(newsockfd); char ki[256]; sprintf(ki,"echo ludilo >>/home/log.txt"); system(ki); exit(0); } /*sredi if (newsockfd < 0) error("ERROR on accept"); bzero(buffer,256); n = read(newsockfd,buffer,255); if (n < 0) error("ERROR reading from socket"); printf("Here is the message: %s\n",buffer); n = write(newsockfd,"I got your message",18); if (n < 0) error("ERROR writing to socket"); }*/ } return 0; }