diff --git a/builds/client.o b/builds/client.o index 1afc182..c6667f4 100644 Binary files a/builds/client.o and b/builds/client.o differ diff --git a/builds/server.o b/builds/server.o index e0af096..b106e20 100644 Binary files a/builds/server.o and b/builds/server.o differ diff --git a/client b/client index 70f87c9..22ef95b 100755 Binary files a/client and b/client differ diff --git a/includes/minitalk.h b/includes/minitalk.h index 7acd2fd..bd1a41d 100644 --- a/includes/minitalk.h +++ b/includes/minitalk.h @@ -1,9 +1,18 @@ #ifndef MINITALK_H # define MINITALK_H -# include // for signal kill +# include // for signal kill sigaction # include // for getpid kill # include // for getpid # include "libft.h" +typedef struct s_message +{ + unsigned int count_bits; + char character; + char *text; +} t_message; + +t_message message; + #endif diff --git a/server b/server index 553c757..bb15221 100755 Binary files a/server and b/server differ diff --git a/srcs/client.c b/srcs/client.c index f492fe4..0f29437 100644 --- a/srcs/client.c +++ b/srcs/client.c @@ -26,8 +26,8 @@ void send_char(int server_pid, char c) ft_putnbr(0); kill(server_pid, SIGUSR2); } - sleep(1); mask >>= 1; + usleep(300); } } diff --git a/srcs/server.c b/srcs/server.c index 3d8bd99..9a484c8 100644 --- a/srcs/server.c +++ b/srcs/server.c @@ -1,49 +1,42 @@ #include "minitalk.h" -#include // for printf - -//int ft_printf(char *string, ...); void sig_handler_1(int sig_num) { (void)sig_num; - ft_putnbr(1); + message.character ^= 1 << (6 - message.count_bits); + message.count_bits++; } void sig_handler_2(int sig_num) { (void)sig_num; - ft_putnbr(0); + message.count_bits++; +} + +void init_message(void) +{ + message.count_bits = 0; + message.character = 0; + message.text = ft_strdup(""); } int main() { - int pid; - - pid = (int)getpid(); - ft_printf("%i\n", pid); signal(SIGUSR1, sig_handler_1); signal(SIGUSR2, sig_handler_2); - -// int mask; -// mask = 1 << 6; -// char character; -// character = 'c'; -// ft_printf("%c %i\n", character, character, mask); -// while (mask != 0) -// { -// ft_putchar('\n'); -// ft_putnbrbase(character, "01"); -// ft_putchar('\n'); -// ft_putnbrbase(mask, "01"); -// ft_putchar('\n'); -// if ((character & mask) != 0) -// ft_putchar('1'); -// if ((character & mask) == 0) -// ft_putchar('0'); -// mask >>= 1; -// } - - while (1); + ft_putnbrendl((int)getpid()); + init_message(); + while (1) + { + if (message.count_bits == 7) + { + message.text = ft_strjoinfree(message.text, ft_strdup(&(message.character))); + ft_putnbrbase(message.character, "01"); + ft_printf(" %c %s\n", message.character, message.text); + message.count_bits = 0; + message.character = 0; + } + } return (0); }