#include "client.h" int usage(void) { ft_printf("usage: ./client [server pid] [message]\n"); return (0); } // void send_char(int server_pid, char c) // { // int mask; // // mask = 1 << 6; // while (mask != 0) // { // if (msg_received == 1) // { // if ((c & mask) != 0) // kill(server_pid, SIGUSR1); // if ((c & mask) == 0) // kill(server_pid, SIGUSR2); // msg_received = 0; // mask >>= 1; // } // } // } // // void send_message(int sig_num) // { // (void)sig_num; // while (*(client.text)) // { // send_char(client.server_pid, *(client.text)); // (client.text)++; // } // send_char(client.server_pid, *(client.text)); // } void send_char(char c, int mask, int server_pid) { if ((c & mask) != 0) kill(server_pid, SIGUSR1); if ((c & mask) == 0) kill(server_pid, SIGUSR2); } void send_message(int sig_num) { (void)sig_num; if (client.text[client.count_char] != '\0') { if (client.mask == 0) { client.mask = 1 << 6; (client.count_char)++; } else client.mask >>= 1; send_char(client.text[client.count_char], client.mask, client.server_pid); } send_char(client.text[client.count_char], client.mask, client.server_pid); ft_putnbrbase(client.mask, "01"); ft_printf(" (%i) - [%i] %s\n", client.mask, client.count_char, client.text + client.count_char); } void init_client(int pid, char *msg) { client.mask = 0; client.count_char = 1 << 7; client.server_pid = pid; client.text = msg; } int main(int ac, char **av) { signal(SIGUSR1, send_message); if (ac != 3) return (usage()); init_client(ft_atoi(av[1]), av[2]); kill((int)getpid(), SIGUSR1); return (0); }