Ejemplo n.º 1
0
void client_send_receive_command()
{
    int n;
    int break_while=0;
    char r_w_buffer[1024];
    int file_flag=0;
    printf("Please enter the message:");
    bzero(r_w_buffer,256);
    if(strcmp(r_w_buffer,"BYE")==0)
	    exit(1);
    scanf("%*c%[^\n]",r_w_buffer);
    n = write(sockfd, r_w_buffer, strlen(r_w_buffer));
    char buffer[1024];
    strcpy(buffer,r_w_buffer);
    if (strstr(buffer, "FileDownload") != NULL)
    {
	    break_while=1;
	    // file_download();
	    char *pch;
	    char buffer_backup[1024],file_path[1024];
	    strcpy(buffer_backup, buffer);
	    pch = strtok (buffer_backup, " ");
	    pch = strtok(NULL, " ");
	    pch = strtok (pch, "\n");
	    strcpy(file_path,CLIENT);
	    strcat(file_path,pch);
	    printf("%s\n",file_path);
	    printf("Waiting for Server to provide Permission\n");
	    char r_w_buffer[1024];
	    read(sockfd, r_w_buffer, 1);
	    if(r_w_buffer[0]=='y')
	    {	    
		printf("Downloading.. for you\n");
	    	client_receive_file(file_path);
	    }
	    else
	    {
	    	printf("Download denied\n");
	    }


    }
    else if (strstr(buffer, "FileUpload") != NULL)
    {
	    break_while=1;
	    printf("buffer=%s\n",buffer);
	    char *pch;
	    char buffer_backup[1024],file_path[1024];
	    strcpy(buffer_backup, buffer);
	    pch = strtok (buffer_backup, " ");
	    pch = strtok(NULL, " ");
	    pch = strtok (pch, "\n");
	    strcpy(file_path,CLIENT);
	    printf("file_path=%s\n",file_path);
	    strcat(file_path,pch);
	    printf("file_path=%s\n",file_path);
	    client_send_file(file_path);
    }

    if (n < 0)
        error("ERROR writing to socket");

    bzero(r_w_buffer, 1024);
    while(1 && !break_while)
    {
        bzero(r_w_buffer, 1024);
        n = read(sockfd, r_w_buffer, 1024);
        if (n < 0)
	{
		break;
       //     error("ERROR reading mach18  from socket");
	}
	//printf("finally\n");

/*	if(strcmp(r_w_buffer,"Hi\n") ==0)
	{	
		file_flag=1;
		continue;
	}
	if(strcmp(r_w_buffer,"Done\n")==0)
	{
		file_flag=0;
		printf("here\n");
		continue;
	}
	if(file_flag==0)
	{
	*/
		printf("%s ", r_w_buffer);
/*	}
	else
	{	
		FILE *fptr;
		fptr=fopen("NewDownloaded_file","a");
		fprintf(fptr,"%s\n", r_w_buffer);
		fclose(fptr);
	}
	*/
        if (strstr(r_w_buffer, "---LIST END---\n") != NULL)
            break;
    }
}
Ejemplo n.º 2
0
int main(int argc, char **argv)
{
  int status;
  char ip_addr[INET_ADDRSTRLEN];
  char *service;
  int server_sock = -1;
  int exit_flag = 0;
  int ftp_sock = 9999;

  fd_set temp;

  /*Init. Logger*/
#ifndef MY_PC
  cse4589_init_log(argv[2]);
#endif

  int sock;
  if(argc<3)
  {
    printf("No args\n");
    return 1;
  }
  if(!validate_port(argv[2]))
    return 0;

  FD_ZERO(&wait_fd);
  FD_ZERO(&temp);
  FD_SET(0, &wait_fd);
  tv.tv_sec = 15;
  tv.tv_usec = 0;

  if(!strcmp(argv[1], "s"))
  {
    is_server = true;
  }
  else if(strcmp(argv[1], "c"))
  {
    printf("Usage ./sock [s/c]\n");
    return 0;
  }
  set_listening_port(argv[2]);
  server_sock = server_start(argv[2]);
  if(server_sock <=0)return 0;
  sock = server_sock;
  add_fd(sock);

  int i =2;
  while(!exit_flag)
  {
    temp = wait_fd;
    int ret = select(active_sockets, &temp, NULL, NULL, NULL);
    if(ret)
    {
      if(FD_ISSET(STDIN, &temp))
      {
        exit_flag = parse_shell();
      }
      else if(FD_ISSET(server_sock, &temp))
      {
        // server socket is active, check for new connections
        if(is_server)
        {
          int new_socket = server_accept(server_sock);
          add_fd(new_socket);
        }
        else
        {
          int new_socket = server_accept(server_sock);
          //add ftp socket
          add_fd(new_socket);
          ftp_sock = new_socket;
        }
      }
      else if(FD_ISSET(ftp_sock, &temp))
      {
        client_receive_file(&ftp_sock);
      }
      else
      {
        for(int fd = 3; fd<=active_sockets; fd++)
        {
          if(FD_ISSET(fd, &temp))
          {
            if(is_server)
              server_receive(fd);
            else
              client_receive(fd);
          }
        }
      } //End of else
    } //end of select handling
  } //end loop
  clear_fd(sock);
  close(sock);
#ifndef MY_PC
  fclose(fopen(LOGFILE, "w"));
#endif
  return 0;
}