- помогите написать несложную программку :), 2Nike, 18:31 , 22-Май-09 (1)
>Всем приветик!))) >обращаюсь ко всем кто может помочь, кто не может просьба не отписывать >всякие подколки ;) >в общем мне надо написать простенькую программку: >"клиент принимает с клавиатуры команды и передает их серверу. сервер выполняет приянтые >команды и возварщает результаты их выполнения клиента. принимаемые данные клиент выводит >на терминао. программы запускать на разных терминалах" >пожалуйста помогите очень срочно надо! Сессия подкралась незаметно? Если уж Вы недостаточно образованы, чтобы написать, что то самой\самому, то хотя бы потрудитесь написать нормальное описание для программы.
- помогите написать несложную программку :), albina, 18:46 , 22-Май-09 (2)
>Сессия подкралась незаметно? >Если уж Вы недостаточно образованы, чтобы написать, что то самой\самому, то хотя >бы потрудитесь написать нормальное описание для программы. ну вобщем такое задание мне дали, как есть написала, если что то непонятно отвечу ну а так... есть 2 терминала один клиент а другой сервер в клиенте вводятся простенькие команды типа ps -l они отсылаются на сервер там они выполняются и результаты возвращаются клиенту, принятые данные он выводит на терминал
- помогите написать несложную программку :), Владимир, 19:55 , 22-Май-09 (3)
- помогите написать несложную программку :), dont, 21:55 , 22-Май-09 (5)
>>Сессия подкралась незаметно? >>Если уж Вы недостаточно образованы, чтобы написать, что то самой\самому, то хотя >>бы потрудитесь написать нормальное описание для программы. > >ну вобщем такое задание мне дали, как есть написала, если что то >непонятно отвечу >ну а так... есть 2 терминала один клиент а другой сервер >в клиенте вводятся простенькие команды типа ps -l они отсылаются на >сервер там они выполняются и результаты возвращаются клиенту, принятые данные он >выводит на терминал Устанавливаете на сервере sshd. На клиенте генерируете ключ для входа без пароля. Ну и потом выполняете: ssh <user>@<server> 'df -h' Оформляете это в скрипт, который будет запрашивать команды. "df -h" - в даном случае покажет свободное место. Подставляйте какие угодно команды.
- помогите написать несложную программку :), аноним, 00:26 , 27-Май-09 (7)
>пожалуйста помогите очень срочно надо! Советую посмотреть boost::aio
- помогите написать несложную программку :), RomanCh, 15:18 , 27-Май-09 (8)
Могу помочь. За некоторое вознаграждение ;-)
- помогите написать несложную программку :), Alex.vL, 02:50 , 29-Май-09 (10)
>Всем приветик!))) >обращаюсь ко всем кто может помочь, кто не может просьба не отписывать >всякие подколки ;) >в общем мне надо написать простенькую программку: >"клиент принимает с клавиатуры команды и передает их серверу. сервер выполняет приянтые >команды и возварщает результаты их выполнения клиента. принимаемые данные клиент выводит >на терминао. программы запускать на разных терминалах" >пожалуйста помогите очень срочно надо! Вот сарцы: сервер : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <sys/wait.h> #include <sys/types.h> void process_client(int nsfd) { int pid,di=0; char input[1024]; FILE *p1; pid = fork(); if(pid>0) return ; if(pid<0) {perror(" fork() error"); return ; }
// child bzero(input, sizeof(input)); while(1) { char ch; int rv; rv = recv(nsfd, &ch, 1, 0); if(rv<=0) { shutdown(nsfd, SHUT_RDWR); close(nsfd); exit(0); } if(ch=='\n') break; input[di++] = ch; } p1 = popen(input, "r"); while(1) { char line[1024]; char *rptr; int rv; // read line from command bzero(line, sizeof(line)); rptr = fgets(line, sizeof(line)-1, p1); if(rptr == NULL) break; // write line to socket rv = send(nsfd, line, strlen(line),0); if(rv<=0) break; } shutdown(nsfd, SHUT_RDWR); close(nsfd); exit(1); } void sig_chld_proc(int sig) { waitpid(-1, NULL, WNOHANG); } int main() { int sfd; int rv; struct sockaddr_in local; local.sin_family = AF_INET; local.sin_port = htons(1516); local.sin_addr.s_addr = INADDR_ANY; sfd = socket(AF_INET, SOCK_STREAM, 0); if(sfd<0) {perror(" socket() error..."); exit(1); } rv = 1; setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &rv, sizeof(rv)); rv = bind(sfd, (void*)&local, sizeof(local)); if(rv< 0) { perror(" bind() error..."); exit(1); } rv = listen(sfd, 5); if(rv< 0) { perror(" listen() error..."); exit(1); } signal(SIGCHLD, sig_chld_proc); while(1) { int nsfd; nsfd = accept(sfd, NULL, NULL); if(nsfd <0 ) { perror(" accept() error .. continue."); continue; } process_client(nsfd); close(nsfd); } } >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Клиент : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main() { int sfd; struct sockaddr_in remote; remote.sin_family = AF_INET; remote.sin_port = htons(1516); remote.sin_addr.s_addr = inet_addr("127.0.0.1"); while(1) { char * in_ptr = NULL; int rv; char input_buff[2048]; sfd = socket(AF_INET, SOCK_STREAM, 0); if(sfd< 0) {perror(" socket() faield..."); exit(1); } rv = connect(sfd, (void*)&remote, sizeof(remote)); if(rv< 0) { perror(" connect failed.."); exit(1); } printf("Connected .. \n"); printf(" Input command #"); in_ptr = fgets(input_buff, sizeof(input_buff), stdin); if(in_ptr == NULL ){ perror("fgets() failed..."); break; } printf("DBG: send cmd: %s", in_ptr); rv = send(sfd, in_ptr, strlen(in_ptr), 0); if(rv<0) { perror("send faield... "); break; } printf("DBG: %d bytes sent...\n", rv); fflush(stdout); while(1) { int rv; char input_buffer[1024]; bzero(input_buffer, sizeof(input_buffer)); rv = recv(sfd, input_buffer, sizeof(input_buffer), 0); if(rv<=0) break; puts(input_buffer); } fflush(stdout); shutdown(sfd, SHUT_RDWR); close(sfd); } return 0; }
|