From 0f8026a5bb1f9ee8a90b707076775ced9c01c611 Mon Sep 17 00:00:00 2001 From: ada-dmitry Date: Fri, 20 Oct 2023 15:53:18 +0300 Subject: [PATCH] meow --- TMP/Practice/sock20.10.23/app_client | Bin 0 -> 17056 bytes TMP/Practice/sock20.10.23/app_server | Bin 0 -> 17208 bytes TMP/Practice/sock20.10.23/c4.c | 198 ++++++++++-------- TMP/Practice/sock20.10.23/files/app_client | Bin 0 -> 17056 bytes TMP/Practice/sock20.10.23/files/app_server | Bin 0 -> 17208 bytes TMP/Practice/sock20.10.23/s4.c | 226 ++++++++++++--------- 6 files changed, 243 insertions(+), 181 deletions(-) create mode 100755 TMP/Practice/sock20.10.23/app_client create mode 100755 TMP/Practice/sock20.10.23/app_server create mode 100755 TMP/Practice/sock20.10.23/files/app_client create mode 100755 TMP/Practice/sock20.10.23/files/app_server diff --git a/TMP/Practice/sock20.10.23/app_client b/TMP/Practice/sock20.10.23/app_client new file mode 100755 index 0000000000000000000000000000000000000000..c647da4e44174a94a8d43e8b4268545294c842ed GIT binary patch literal 17056 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 literal 0 HcmV?d00001 diff --git a/TMP/Practice/sock20.10.23/app_server b/TMP/Practice/sock20.10.23/app_server new file mode 100755 index 0000000000000000000000000000000000000000..f050949aaf0644a465e6423b8c3f6844b724eb50 GIT binary patch literal 17208 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 #include -#define errExit(msg) do { perror(msg); _exit(EXIT_FAILURE); } while (0) -#define SerrExit(s,msg) do { close(s); perror(msg); _exit(EXIT_FAILURE); } while (0) +#define errExit(msg) \ + do \ + { \ + perror(msg); \ + _exit(EXIT_FAILURE); \ + } while (0) +#define SerrExit(s, msg) \ + do \ + { \ + close(s); \ + perror(msg); \ + _exit(EXIT_FAILURE); \ + } while (0) #define SERVER_PATH "/tmp/unix_sock.server" #define CLIENT_PATH "unix_sock.client" @@ -18,125 +29,146 @@ #define BUF 128 #define FINS "exit_s" #define FINC "exit_c" -//#define INFO +// #define INFO -int rcvBuffer(int sock_fd){ - int rcvBufferSize; - socklen_t sockOptSize = sizeof(rcvBufferSize); - getsockopt(sock_fd, SOL_SOCKET, SO_RCVBUF, &rcvBufferSize, &sockOptSize); +int rcvBuffer(int sock_fd) +{ + int rcvBufferSize; + socklen_t sockOptSize = sizeof(rcvBufferSize); + getsockopt(sock_fd, SOL_SOCKET, SO_RCVBUF, &rcvBufferSize, &sockOptSize); #ifdef INFO - printf("initial socket receive buf %d\n", rcvBufferSize); + printf("initial socket receive buf %d\n", rcvBufferSize); #endif - return rcvBufferSize; + return rcvBufferSize; } -int recvCount(const void *s, int size){ +int recvCount(const void *s, int size) +{ register int count; register int mark; register char *p; - p=(char *)s; + p = (char *)s; count = 0; mark = 0; - do { - if (*p && !(*(p+1))) count++; + do + { + if (*p && !(*(p + 1))) + count++; #ifdef INFO - printf("[%c][%X]\n",*p,*p); + printf("[%c][%X]\n", *p, *p); #endif - p++; - mark++; - } while (!((*p == '\0') && (*(p+1)=='\0')) && (mark < size)); + p++; + mark++; + } while (!((*p == '\0') && (*(p + 1) == '\0')) && (mark < size)); return count; } -int main(int argc,char *argv[]){ +int main(int argc, char *argv[]) +{ - int client_sock, rc, len; - struct sockaddr_un server_sockaddr; - struct sockaddr_un client_sockaddr; - char obuf[BUF]; - char **ibuf; - size_t obs=BUF,ibs; - char cpath[22]; + int client_sock, rc, len; + struct sockaddr_un server_sockaddr; + struct sockaddr_un client_sockaddr; + char obuf[BUF]; + char **ibuf; + size_t obs = BUF, ibs; + char cpath[22]; - sprintf(cpath,"%d-%s",getpid(),CLIENT_PATH); - len = sizeof(client_sockaddr); - memset(&server_sockaddr, 0, sizeof(struct sockaddr_un)); - memset(&client_sockaddr, 0, sizeof(struct sockaddr_un)); - - client_sock = socket(AF_UNIX, SOCK_STREAM, 0); - if (client_sock == -1) { - perror("socket"); - exit(1); - } + sprintf(cpath, "%d-%s", getpid(), CLIENT_PATH); + len = sizeof(client_sockaddr); + memset(&server_sockaddr, 0, sizeof(struct sockaddr_un)); + memset(&client_sockaddr, 0, sizeof(struct sockaddr_un)); + client_sock = socket(AF_UNIX, SOCK_STREAM, 0); + if (client_sock == -1) + { + perror("socket"); + exit(1); + } - client_sockaddr.sun_family = AF_UNIX; - strcpy(client_sockaddr.sun_path, cpath); - - unlink(cpath); - rc = bind(client_sock, (struct sockaddr *) &client_sockaddr, len); - if (rc == -1) SerrExit(client_sock,"bind"); + client_sockaddr.sun_family = AF_UNIX; + strcpy(client_sockaddr.sun_path, cpath); - server_sockaddr.sun_family = AF_UNIX; - strcpy(server_sockaddr.sun_path, SERVER_PATH); - rc = connect(client_sock, (struct sockaddr *) &server_sockaddr, len); - if (rc == -1) SerrExit(client_sock,"connect"); - - ibs=rcvBuffer(client_sock); - if ((ibuf=(char **)malloc(ibs)) == NULL ) errExit("malloc"); + unlink(cpath); + rc = bind(client_sock, (struct sockaddr *)&client_sockaddr, len); + if (rc == -1) + SerrExit(client_sock, "bind"); - do { + server_sockaddr.sun_family = AF_UNIX; + strcpy(server_sockaddr.sun_path, SERVER_PATH); + rc = connect(client_sock, (struct sockaddr *)&server_sockaddr, len); + if (rc == -1) + SerrExit(client_sock, "connect"); + + ibs = rcvBuffer(client_sock); + if ((ibuf = (char **)malloc(ibs)) == NULL) + errExit("malloc"); + + do + { memset(obuf, 0, obs); - printf("> "); - scanf("%s",obuf); + printf("> "); + scanf("%s", obuf); printf("Sending data...\n"); - rc = send(client_sock, obuf, strlen(obuf)+1, 0); - if (rc == -1) { + rc = send(client_sock, obuf, strlen(obuf) + 1, 0); + if (rc == -1) + { perror("send"); close(client_sock); exit(1); - } else { - printf("Data sent!\n"); + } + else + { + printf("Data sent!\n"); } printf("Waiting to recieve data...\n"); memset(ibuf, 0, ibs); - rc = recv(client_sock, ibuf, ibs,0); - if (rc == -1) { + rc = recv(client_sock, ibuf, ibs, 0); + if (rc == -1) + { perror("recv"); close(client_sock); exit(1); - } else { - int c = recvCount(ibuf,ibs); + } + else + { + int c = recvCount(ibuf, ibs); #ifdef INFO - char *p = (char *)ibuf; - printf("count: %d resieved\n",c); - for (int i = 0; i < 32; i++){ - printf("[%c][%X]",*p,*p); - p++; - } - printf("\n"); + char *p = (char *)ibuf; + printf("count: %d resieved\n", c); + for (int i = 0; i < 32; i++) + { + printf("[%c][%X]", *p, *p); + p++; + } + printf("\n"); #endif #ifndef INFO - char p[obs]; - char *tp = (char *)ibuf; -// if ((ibuf=(char **)malloc(ibs)) == NULL ) errExit("malloc"); - for (int i = 0; i < c; i++){ - memset(p,0,obs); - while (*tp) {strncat(p,tp,1);tp++;} - tp++; -// printf("DATA RECEIVED [%ld] = %s\n", strlen(ibuf[i]),ibuf[i]); - printf("DATA RECEIVED [%ld] = %s\n", strlen(p),p); -// printf("DATA RECEIVED [%ld] = %s\n", strlen(p[i]),p[i]); - } + char p[obs]; + char *tp = (char *)ibuf; + // if ((ibuf=(char **)malloc(ibs)) == NULL ) errExit("malloc"); + for (int i = 0; i < c; i++) + { + memset(p, 0, obs); + while (*tp) + { + strncat(p, tp, 1); + tp++; + } + tp++; + // printf("DATA RECEIVED [%ld] = %s\n", strlen(ibuf[i]),ibuf[i]); + printf("DATA RECEIVED [%ld] = %s\n", strlen(p), p); + // printf("DATA RECEIVED [%ld] = %s\n", strlen(p[i]),p[i]); + } #endif } - - } while (strcmp(obuf,FINC) && strcmp(obuf,FINS)); - close(client_sock); - unlink(cpath); - - return 0; + } while (strcmp(obuf, FINC) && strcmp(obuf, FINS)); + + close(client_sock); + unlink(cpath); + + return 0; } diff --git a/TMP/Practice/sock20.10.23/files/app_client b/TMP/Practice/sock20.10.23/files/app_client new file mode 100755 index 0000000000000000000000000000000000000000..c647da4e44174a94a8d43e8b4268545294c842ed GIT binary patch literal 17056 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 literal 0 HcmV?d00001 diff --git a/TMP/Practice/sock20.10.23/files/app_server b/TMP/Practice/sock20.10.23/files/app_server new file mode 100755 index 0000000000000000000000000000000000000000..72c8be51045adba5f8f51d18f4a0249917ea6309 GIT binary patch literal 17208 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 H7c2e?AwpJb literal 0 HcmV?d00001 diff --git a/TMP/Practice/sock20.10.23/s4.c b/TMP/Practice/sock20.10.23/s4.c index 48b2e3f..c4f8b7d 100644 --- a/TMP/Practice/sock20.10.23/s4.c +++ b/TMP/Practice/sock20.10.23/s4.c @@ -11,132 +11,162 @@ #include #include -#define errExit(msg) do { perror(msg); _exit(EXIT_FAILURE); } while (0) +#define errExit(msg) \ + do \ + { \ + perror(msg); \ + _exit(EXIT_FAILURE); \ + } while (0) -#define SOCK_PATH "/tmp/unix_sock.server" +#define SOCK_PATH "/tmp/unix_sock.server" #define DATA "Hello from server" #define BUF 128 #define FINS "exit_s" #define FINC "exit_c" -void child_handler(int sig) { - pid_t pid; - while((pid = waitpid(-1, NULL, WNOHANG)) > 0); +void child_handler(int sig) +{ + pid_t pid; + while ((pid = waitpid(-1, NULL, WNOHANG)) > 0) + ; } -void session(int client_sock, struct sockaddr_un server_sockaddr, struct sockaddr_un client_sockaddr){ - int rc; - char inbuf[BUF]; - char outbuf[BUF]; - int bytes_rec = 0; - size_t bs = BUF; - socklen_t len; - pid_t ppid, pid; +void session(int client_sock, struct sockaddr_un server_sockaddr, struct sockaddr_un client_sockaddr) +{ + int rc; + char inbuf[BUF]; + char outbuf[BUF]; + int bytes_rec = 0; + size_t bs = BUF; + socklen_t len; + pid_t ppid, pid; - ppid=getppid(); - pid=getpid(); + ppid = getppid(); + pid = getpid(); len = sizeof(client_sockaddr); - rc = getpeername(client_sock, (struct sockaddr *) &client_sockaddr, &len); - if (rc == -1){ + rc = getpeername(client_sock, (struct sockaddr *)&client_sockaddr, &len); + if (rc == -1) + { close(client_sock); errExit("getpeer"); - } else { + } + else + { printf("[%d] Client socket filepath: %s\n", pid, client_sockaddr.sun_path); } - do { - printf("waiting for %s...\n",client_sockaddr.sun_path); - memset(inbuf, 0, bs); - bytes_rec = recv(client_sock, inbuf, bs, 0); - if (bytes_rec == -1){ - close(client_sock); - errExit("recv"); - } else { - printf("[%s]: %s\n", client_sockaddr.sun_path, inbuf); - } - - memset(outbuf, 0, bs); - strcpy(outbuf, DATA); - printf("Sending data...\n"); - rc = send(client_sock, outbuf, strlen(outbuf)+1, 0); - if (rc == -1) { - close(client_sock); - errExit("send"); - } else { - printf("Data sent!\n"); - } - if (strcmp(inbuf,FINS) == 0 ) {kill(ppid,SIGTERM);break;} - } while (strcmp(inbuf,FINC)); + do + { + printf("waiting for %s...\n", client_sockaddr.sun_path); + memset(inbuf, 0, bs); + bytes_rec = recv(client_sock, inbuf, bs, 0); + if (bytes_rec == -1) + { + close(client_sock); + errExit("recv"); + } + else + { + printf("[%s]: %s\n", client_sockaddr.sun_path, inbuf); + } + + memset(outbuf, 0, bs); + strcpy(outbuf, DATA); + printf("Sending data...\n"); + rc = send(client_sock, outbuf, strlen(outbuf) + 1, 0); + if (rc == -1) + { + close(client_sock); + errExit("send"); + } + else + { + printf("Data sent!\n"); + } + if (strcmp(inbuf, FINS) == 0) + { + kill(ppid, SIGKILL); + break; + } + } while (strcmp(inbuf, FINC)); memset(outbuf, 0, bs); - sprintf(outbuf,"Exit %d\n",pid); - rc = send(client_sock, outbuf, strlen(outbuf)+1, 0); - if (rc == -1) { + sprintf(outbuf, "Exit %d\n", pid); + rc = send(client_sock, outbuf, strlen(outbuf) + 1, 0); + if (rc == -1) + { close(client_sock); errExit("send"); - } + } close(client_sock); exit(0); } -int main(void){ +int main(void) +{ - int server_sock, client_sock, rc; - socklen_t len; - struct sockaddr_un server_sockaddr; - struct sockaddr_un client_sockaddr; - int backlog = 10; - pid_t pid; + int server_sock, client_sock, rc; + socklen_t len; + struct sockaddr_un server_sockaddr; + struct sockaddr_un client_sockaddr; + int backlog = 10; + pid_t pid; - struct sigaction new_act, old_act; - sigemptyset (&new_act.sa_mask); - new_act.sa_flags = SA_RESTART; - new_act.sa_handler = child_handler; - sigaction (SIGCHLD, &new_act, &old_act); + struct sigaction new_act, old_act; + sigemptyset(&new_act.sa_mask); + new_act.sa_flags = SA_RESTART; + new_act.sa_handler = child_handler; + sigaction(SIGCHLD, &new_act, &old_act); - len = sizeof(server_sockaddr); - memset(&server_sockaddr, 0, sizeof(struct sockaddr_un)); - memset(&client_sockaddr, 0, sizeof(struct sockaddr_un)); - - server_sock = socket(AF_UNIX, SOCK_STREAM, 0); - if (server_sock == -1) errExit("socket"); - - server_sockaddr.sun_family = AF_UNIX; - strcpy(server_sockaddr.sun_path, SOCK_PATH); - - unlink(SOCK_PATH); - rc = bind(server_sock, (struct sockaddr *) &server_sockaddr, len); - if (rc == -1){ - close(server_sock); - errExit("bind"); - } - - rc = listen(server_sock, backlog); - if (rc == -1){ - close(server_sock); - errExit("listen"); - } + len = sizeof(server_sockaddr); + memset(&server_sockaddr, 0, sizeof(struct sockaddr_un)); + memset(&client_sockaddr, 0, sizeof(struct sockaddr_un)); - printf("socket listening...\n"); + server_sock = socket(AF_UNIX, SOCK_STREAM, 0); + if (server_sock == -1) + errExit("socket"); - do { - client_sock = accept(server_sock, (struct sockaddr *) &client_sockaddr, &len); - if (client_sock == -1){ + server_sockaddr.sun_family = AF_UNIX; + strcpy(server_sockaddr.sun_path, SOCK_PATH); + + unlink(SOCK_PATH); + rc = bind(server_sock, (struct sockaddr *)&server_sockaddr, len); + if (rc == -1) + { close(server_sock); - close(client_sock); - errExit("accept"); + errExit("bind"); } - if ((pid = fork()) == -1 ) { - close(server_sock); - close(client_sock); - errExit("fork"); - } - if (pid == 0) session(client_sock,server_sockaddr,client_sockaddr); - close(client_sock); - } while (1); - - close(server_sock); - unlink(SOCK_PATH); - - return 0; + rc = listen(server_sock, backlog); + if (rc == -1) + { + close(server_sock); + errExit("listen"); + } + + printf("socket listening...\n"); + + do + { + client_sock = accept(server_sock, (struct sockaddr *)&client_sockaddr, &len); + if (client_sock == -1) + { + close(server_sock); + close(client_sock); + errExit("accept"); + } + if ((pid = fork()) == -1) + { + close(server_sock); + close(client_sock); + errExit("fork"); + } + if (pid == 0) + session(client_sock, server_sockaddr, client_sockaddr); + close(client_sock); + } while (1); + + close(server_sock); + unlink(SOCK_PATH); + + return 0; }