
RicardoHipHop182
(usa Fedora)
Enviado em 25/11/2009 - 14:06h
Uma aplicação cliente/servidor em que o processo cliente envia ao servidor o nome de um arquivo e recebe o tamanho do arquivo em bytes. Se o arquivo não existir o servidor enviará o valor -1.
Escreva o módulo cliente que implemente as seguintes funções:
a) Leia o nome do arquivo, o ip e a porta do servidor na linha de comando.
b) Envie o nome do arquivo para o servidor.
c) Aguarde a resposta do servidor informando o tamanho do arquivo, caso o arquivo exista, ou –1 caso contrário
d) Mostre o tamanho do arquivo ou mensagem de erro (caso não exista).
até agora consegui isso...
Alguém pode me ajudar nos possíveis erros meus ?????
#include <stdio.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#Define MAX 200
struct sockaddr_in {
short int sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
} ;
int main (int argc , char**argv) {
int sockdesc, i , conexão, desc, nb ;
struct sockaddr_in estrutura ;
char buffer[max+1];
if (argc!=4) printf ("sintaxe : %s arquivo , <ip> , porta \n", argv[0]);
else{
estrutura.sin_family= AF_INET;
estrutura.sin_addr.s_addr=inet_addr(argv[2]);
estrutura.sin_port= htons(argv[3]);
sockdesc= socket(AF_INET,SOCK_STREAM, 0 );
if (sockdesc== -1 ) printf ("error sockdesc -1");
else {
Conexão = connect (sockdesc,(struct sockaddr*)&estrutura, sizeof(struct sockaddr));
if (conexão== - 1) printf("erro na conexão");
else {
desc= open (argv[1],O_RDONLY);
if (desc<0) printf("erro ao abrir o arquivo ou arquivo nao existe %s \n",argv[1]);
else {
do{ nb= read(desc, buffer, MAX);} while (nb!=0);
close (desc);
close(sockdesc) ; close(conexão);
}
}
}
}
#Define MAX 200
int desc, nb;
char buffer[max+1]