transfert de fichier socket client-serveur

transfert de fichier socket client-serveur - C - Programmation

Marsh Posté le 09-02-2005 à 22:48:05    

voila ca a l'air tout bête mais je n'arrive pas à trouver les fonctions qui me permettent d'envoyer un fichier ou autre en langage c.je dois faire donc par socket un client-serveur sous linux avec un envoi de données.
 
je precise ce n'est ma matiere principale d'où ma requete car cela m'est indispensable,je sais que j'ai besoin de buffer mais bon il y a d'autres fonction pour envoyer recevoir,afficher le contenu
 
merci d'avance!
 
bonne continuation

Reply

Marsh Posté le 09-02-2005 à 22:48:05   

Reply

Marsh Posté le 09-02-2005 à 22:55:28    

send/recv

Reply

Marsh Posté le 09-02-2005 à 23:01:15    

merci maisà linterieur de send et rec n'y a til pas de fonctions a mettre dont le buffer...

Reply

Marsh Posté le 09-02-2005 à 23:01:53    

quoi ?

Reply

Marsh Posté le 10-02-2005 à 00:35:19    

Si la portabilite n'est pas un probleme tu peux aussi utiliser sendfile(), qui est plus simple pour transferer un fichier et qui evite de multiples copyout.

Reply

Marsh Posté le 24-02-2005 à 18:50:16    

voici mon prog que l on ma donné apartir de ca sous unix je dois faire un transfert de données ou autre:moi je ne m y connais pas du tout alors pouvais vous me dire ce que je dois mettre et ce que je dosi enlever en vous remerciant.j'ai essayé de l'ecrire mais chaque fois on me dit des erreurs dont je ne connais pas dont je ne sais comment les resoudre.peut etre manque t il quelque chose ou mal écrit

Reply

Marsh Posté le 24-02-2005 à 18:50:54    

// serveur  
 
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <errno.h>
#include <strings.h>
 
#define PORT 12345
 
int main()
{ int sock, sock2, lg;
   
   struct sockaddr_in local;
   struct sockaddr_in distant;
       
   bzero(&local, sizeof(local));
   local.sin_family = AF_INET;
   local.sin_port = htons(PORT);
   local.sin_addr.s_addr = INADDR_ANY;
   bzero(&(local.sin_zero), 8);
   lg = sizeof(struct sockaddr_in);
 
   if((sock=socket(AF_INET, SOCK_STREAM, 0))==-1) {perror(“socket”);exit(1);}
   
   if(bind(sock,(struct sockaddr*)&local,sizeof(struct sockaddr))==-1{perror(“bind”);exit(1);}
 
   if(listen(sock,5)==-1){perror(“listen”);exit(1);}
   printf(“serveur a l ecoute\n”);
   While(1)
   
   {if((sock2=accept(sock,(struct sockaddr*)&distant,&lg))==-1){perror("accept" );exit(1);}
   printf("client connecte\n" );
   close(sock2);
  }
  return 0;
}

Reply

Marsh Posté le 24-02-2005 à 18:52:30    

// client
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <fcntl.h>
 
 
#define SERV "127.0.0.1"
#define PORT 12345
 
 int main()
{ int port,sock;
       
  struct  sockaddr_in     serv_addr;
  struct  hostent         *serveur;
 
  port = PORT;
  serveur = gethostbyname(SERV);
  if (!serveur){fprintf(stderr, "Problème serveur \"%s\"\n",SERV); exit(1);}
 
  sock = socket(AF_INET, SOCK_STREAM, 0);
  bzero(&serv_addr, sizeof(serv_addr));
  serv_addr.sin_family = AF_INET;
  bcopy(serveur->h_addr, &serv_addr.sin_addr.s_addr,serveur->h_length);
  serv_addr.sin_port = htons(port);
 
printf( “demande connexion\n”);
 
if(connect(sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
   {perror(“Connexion impossible”);exit(1);}
    printf(“client connecte \n”);
    printf(“fin client \n”);
    close(sock) ;
    return0 ;
}

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed