Enviado em 08/08/2016 - 11:12h
Eai galera? Beleza? Já faz um tempo que não apareço por aqui, tava meio parado com tudo mesmo. Então, meu problema é, estou dando uma estudada em sockets e estou no meio de um programa que tem as funções de enviar e receber arquivos implementadas. O código até funciona mais ou menos, mas perfeitamente só em algumas situações, em arquivos pequenos. Realmente busco por uma solução para "qualquer" tamanho de arquivo que funcione tanto nos posix quando no windows, que apesar de terem a mesma API (freebsd) em se tratando dos sockets, podem ter algumas peculiaridades no caso de arquivos.
void upload(char *s, int sockfd){
FILE *f;
int n;
f=fopen(s,"rb");
char buff[1024];
if(f==NULL){
perror("Read error");
send(sockfd, buff, sizeof buff, 0);
return;
}
printf("Uploading... \n");
do{
memset(buff,0,sizeof buff);
n=fread(buff, sizeof(char), 1024, f);
if(send(sockfd, buff, n, 0)<0){
perror("send error\n");
return;
}
//recv(sockfd, buff, sizeof buff, 0);
printf("|");
}while(n==1024*sizeof(char));
fclose(f);
}
void download(char *s, int sockfd){
FILE *f;
f=fopen(s,"wb");
int n;
char buff[1024];
if(f==NULL){
perror("write error");
return;
}
printf("Downloading file....\n");
do{
memset(buff,0,sizeof buff);
if((n=recv(sockfd, buff, sizeof buff, 0))<0){
perror("read error\n");
return;
}
fwrite(buff, n, 1, f);
//send(sockfd, "go", sizeof "go", 0);
printf("|");
}while(n>0);
fclose(f);
}
Atenção a quem posta conteúdo de dicas, scripts e tal (6)
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
O mínimo que você precisa saber sobre o terminal (parte 2)
O mínimo que você precisa saber sobre o terminal (parte 1)
Como iniciar uma máquina virtual do VirtualBox automaticamente no boot do LUbuntu 18 LTS
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como deixar as abas do Firefox mais fininhas
Mudar o gerenciador de login (GDM para SDDM)
"Tentando" fazer com que programas rodem no Wayland e no X11
Como posso localizar o arquivo HTML da página inicial do GLPI dentro d... (2)
O que você está ouvindo agora? [2] (164)
Como baixar os drivers de áudio no linux mint? (6)
Erro ao iniciar Ubuntu 24.04.1 LTS - Management Owner Key - MoK (6)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta