static void app(const char *address, const char *name) { SOCKET sock = init_connection(address); char buffer[BUF_SIZE]; fd_set rdfs; /* le client envoie son nom */ write_server(sock, name); while(1) { FD_ZERO(&rdfs); /* ajouter un STDIN_FILENO */ FD_SET(STDIN_FILENO, &rdfs); /* ajouter le socket */ FD_SET(sock, &rdfs); if(select(sock + 1, &rdfs, NULL, NULL, NULL) == -1) { perror("select()"); exit(errno); } /* quelque chose qui vient du clavier */ if(FD_ISSET(STDIN_FILENO, &rdfs)) { fgets(buffer, BUF_SIZE - 1, stdin); { char *p = NULL; p = strstr(buffer, "\n"); if(p != NULL) { *p = 0; } else { /* fclean */ buffer[BUF_SIZE - 1] = 0; } } write_server(sock, buffer); } else if(FD_ISSET(sock, &rdfs)) { int n = read_server(sock, buffer); /* Si le serveur est down */ if(n == 0) { /* On arrête */ break; } puts(buffer); } } end_connection(sock); }
static void app(const char *address, const char *name) { SOCKET sock = init_connection(address); char buffer[BUF_SIZE]; fd_set rdfs; /* send our name */ write_server(sock, name); while(1) { FD_ZERO(&rdfs); /* add STDIN_FILENO */ FD_SET(STDIN_FILENO, &rdfs); /* add the socket */ FD_SET(sock, &rdfs); if(select(sock + 1, &rdfs, NULL, NULL, NULL) == -1) { perror("select()"); exit(errno); } /* something from standard input : i.e keyboard */ if(FD_ISSET(STDIN_FILENO, &rdfs)) { fgets(buffer, BUF_SIZE - 1, stdin); { char *p = NULL; p = strstr(buffer, "\n"); if(p != NULL) { *p = 0; } else { /* fclean */ buffer[BUF_SIZE - 1] = 0; } } write_server(sock, buffer); } else if(FD_ISSET(sock, &rdfs)) { int n = read_server(sock, buffer); /* server down */ if(n == 0) { printf("Server disconnected !\n"); break; } puts(buffer); } } end_connection(sock); }
static void client(int sock, const char *name) { char buff[BUF_SIZE + 1]; fd_set rdfs; write_server(sock, name); while (42) { do_select(sock, &rdfs); if (FD_ISSET(STDIN_FILENO, &rdfs)) { read_msg(buff); write_server(sock, buff); } else if (FD_ISSET(sock, &rdfs)) { if (read_server(sock, buff) == 0) { printf("Server disconnected !\n"); break ; } ft_putendl(buff); if (ft_strcmp(buff, "Pseudo already used") == 0) write_server(sock, pseudo()); } } close(sock); }
/* Send the finger REQUEST to the server. Returns 0 and a file descriptor in R_SOCK if the request was sucessful. */ static int send_request (const char *request, int *r_sock) { char *server; char *name; int sock; *r_sock = -1; name = strdup (request); if (!name) { fprintf(console,"gpgkeys: out of memory\n"); return KEYSERVER_NO_MEMORY; } server = strchr (name, '@'); if (!server) { fprintf (console, "gpgkeys: no name included in request\n"); free (name); return KEYSERVER_GENERAL_ERROR; } *server++ = 0; sock = connect_server (server, 79); if (sock == -1) { free (name); return KEYSERVER_UNREACHABLE; } if (write_server (sock, name, strlen (name)) || write_server (sock, "\r\n", 2)) { free (name); sock_close (sock); return KEYSERVER_GENERAL_ERROR; } free (name); *r_sock = sock; return 0; }
static void filter_client_data(char* data, ssize_t size) { char* lf; while ((lf = memchr(data, LF, size)) != 0) { str_catb(&linebuf, data, lf - data + 1); filter_client_line(); write_server(linebuf.s, linebuf.len); linebuf.len = 0; size -= lf - data + 1; data = lf + 1; } str_catb(&linebuf, data, size); }
void app(const char *address, const char *name) { int sock; char buffer[BUF_SIZE]; fd_set rdfs; strcpy(buffer, "hello"); sock = init_connection(address); write_server(sock, name); while (1) { init_socket(sock, &rdfs); if(select(sock + 1, &rdfs, NULL, NULL, NULL) == -1) { perror("select()"); exit(errno); } if(FD_ISSET(STDIN_FILENO, &rdfs)) { if (read_keyboard(buffer) < 0) continue; transmit_cmd(buffer,sock); } else if(FD_ISSET(sock, &rdfs)) { int n = read_server(sock, &buffer); printf("receive : %s|\n", buffer); if (fgets(buffer, BUF_SIZE - 1, stdin) == NULL) { perror("fgets()"); continue; } printf("receive:%s\n",buffer); /* server down */ if(n == 0) { printf("Server disconnected !\n"); break; } puts(buffer); } } end_connection(sock); }
int main(int argc , char ** argv) { if(argc < 2) { printf("Usage : %s [address] [pseudo]\n", argv[0]); return 1; } char buffer[BUF_SIZE_SOCKET]; fd_set rdfs; //SOCKET define sur intd SOCKET sock = init_connection(argv[1]); /* send our name*/ write_server(sock, argv[2]); while (1) { FD_ZERO(&rdfs); // Vide l'ensemble /*add STDION_FILENO */ //descripteur 0 FD_SET(STDIN_FILENO, &rdfs); /* add socket*/ FD_SET(sock, &rdfs); if (select(sock + 1, &rdfs, NULL, NULL, NULL) == -1) { perror("error select"); exit(errno); } if (FD_ISSET(STDIN_FILENO, &rdfs)) { fgets(buffer, BUF_SIZE_SOCKET - 1, stdin); { char *p = NULL; p = strstr(buffer, "\n"); if (p != NULL) { *p = 0; } else { /* fclean */ buffer[BUF_SIZE_SOCKET -1] = 0; } } write_server(sock, buffer); } else if(FD_ISSET(sock, &rdfs)) { int n = read_server(sock, buffer); /*server down*/ if (n == 0) { printf("Server disconnected !\n"); break; } puts(buffer); write_server(sock, "ok"); } } end_connection(sock); return (0); }
static void filter_client_data(char* data, ssize_t size) { show(data, size, '>'); write_server(data, size); }