transfert de fichier socket client-serveur - C - Programmation
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...
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.
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
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;
}
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 ;
}
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