Здравствуйте, собственно такая проблема уже имеется клиент и сервер обменивающийся сообщениями через udp под Linux. Главный вопрос как можно сделать чтоб сообщение которое отсылается клиентом было как бы командой, и открывало приложение если написан полный путь к нему и убивало это приложение (наверное через pid процесса). Можно на самом деле на любом языке, если кто сталкивался раньше. Или может посоветуете как вообще это делать если нет так как я начал.
Собственно клиент.
| Код | #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h>
char msg1[] = "Hello there!\n"; char msg2[] = "Bye bye!\n";
int main() { int sock; struct sockaddr_in addr;
sock = socket(AF_INET, SOCK_DGRAM, 0); if(sock < 0) { perror("socket"); exit(1); }
addr.sin_family = AF_INET; addr.sin_port = htons(3425); addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); sendto(sock, msg1, sizeof(msg1), 0, (struct sockaddr *)&addr, sizeof(addr));
connect(sock, (struct sockaddr *)&addr, sizeof(addr)); send(sock, msg2, sizeof(msg2), 0);
close(sock);
return 0; }
|
сервер
| Код | #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h>
int main() { int sock; struct sockaddr_in addr; char buf[1024]; int bytes_read;
sock = socket(AF_INET, SOCK_DGRAM, 0); if(sock < 0) { perror("socket"); exit(1); } addr.sin_family = AF_INET; addr.sin_port = htons(3425); addr.sin_addr.s_addr = htonl(INADDR_ANY); if(bind(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) { perror("bind"); exit(2); }
while(1) { bytes_read = recvfrom(sock, buf, 1024, 0, NULL, NULL); buf[bytes_read] = '\0'; printf(buf); } return 0; }
|
|