Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
/* 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;
}
Ejemplo n.º 5
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);
}
Ejemplo n.º 6
0
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);
}
Ejemplo n.º 7
0
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);
}
Ejemplo n.º 8
0
static void filter_client_data(char* data, ssize_t size)
{
  show(data, size, '>');
  write_server(data, size);
}