begin process at 2012 02 11 09:12:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

transfert de fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

transfert de fichier

mercredi 8 février 2006 à 17:23:58 | transfert de fichier

doberman7578

bonjour,

j'ai effectué un serveur client qui permet de transferer des image jpg, dans mon cas je doit saisir le nom de l'image ( par exemple : image_voiture ) pour que le client la recoive, mais j'aimerai recevoir cette image automatiquement, c'est a dir que qquand le client ce connecte au serveur, je voudrai recevoir cette image,donc si quelqu'un pourrait m'aider ca serait sympa de votre part, voici mon code :

/*SERVEUR TRANSFERT IMAGE */

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
int connexion;

/* Fonction activée par la touche Ctrl c , signal SIGINT*/
void fin()
    {close(connexion);
    printf("fin du processus serveur!\n");
    exit(0);
    }
 
int main()
{
int taille,lecture,N;
struct sockaddr_in  sock;
struct sockaddr_in   sockclient ;
char tampon[100], NomFich[100];
int connexion_service;
FILE *fich ;
 
signal(SIGINT,fin) ;
 /* descripteur de socket */
 if ( (connexion = socket(AF_INET,SOCK_STREAM,0) )== -1)
 { perror("erreur socket");
 exit(1);
 }
sock.sin_family = AF_INET;   
sock.sin_addr.s_addr = INADDR_ANY;
sock.sin_port = htons(5000);
 
 if ( bind(connexion,(struct sockaddr *)&sock, sizeof sock ) == -1)
 { perror("erreur bind");
 exit(1);
 }
 
 /* accepte les demandes de connexion */
 listen(connexion,5);
 signal(SIGINT,fin);
 
 while(1)

taille = sizeof ( sockclient );
puts("attente de connexion"); 
if ((connexion_service = accept(connexion,(struct sockaddr *)&sockclient,(socklen_t *)&taille) )==-1)
{ perror("erreur accept");
exit(1);
}
puts("Serveur : connexion etablie");
if (fork()==0)
 
{            /* programme fils */
    lecture = read(connexion_service,NomFich,100);
    if(lecture == 0)        /* retourne 0 si le client exécute close */
    { close(connexion_service);
       puts("socket fermee par client");
       exit(1);            /* le fils  se termine*/
    }
    if (lecture < 0)
    { perror("erreur lecture");
       exit(1);
    }
    tampon[lecture] = 0x00;
    printf("Donnees client : %s\n",NomFich);
    if ( (fich = fopen(NomFich,"rb") ) != NULL)
        {
         strcpy(tampon,"OK") ;
        write(connexion_service,tampon,strlen(tampon));   
        sleep(1) ;
        while ( (N = fread(tampon, sizeof( char), 100, fich) ) != 0)
            write(connexion_service,tampon,N);
        fclose(fich) ;
        close(connexion_service) ;
        }
    else { strcpy(tampon,"NOTOK") ;
        write(connexion_service,tampon,strlen(tampon));     
        close(connexion_service) ;
        }
    exit(0) ;
} /* fin du programme fils */
close(connexion_service);
puts("pere : socket service fermee");

}  


____________________________________________________________________

/*CLIENT TRANSFERT IMAGE */

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
int connexion , n ;
int longueur ;
struct sockaddr_in addr;
char recu[100] , NomFich[50];
FILE *fich ;
/* Obtention du descripteur de socket */
connexion =  socket  ( AF_INET, SOCK_STREAM , 0 );
if  ( connexion ==-1 )
        { perror ("erreur création socket");
          exit(1);}

    /* Remplissage de la structure addr */
addr.sin_family = AF_INET ;
addr.sin_port = htons (5000) ;   
addr.sin_addr.s_addr = inet_addr("192.168.0.6") ;

longueur = sizeof(addr) ;

/* Tentative de connexion */
if (  connect ( connexion , (struct sockaddr *)&addr , longueur) == -1 )
    {perror ("erreur de connexion") ;
    close(connexion) ;
    exit(1);
    }
    /* Suite à compléter : transfert de données avec le serveur */
/*Saisie du nom du fichier à demander*/
printf("Taper le nom du fichier demande : \n");
gets(NomFich) ;

write(connexion, NomFich, strlen(NomFich)+1 );
printf("demande envoye\n");

n = read(connexion, recu, 100) ;
recu[n] = 0 ;
printf("Recu : %s\n", recu) ;
if ( strcmp("NOTOK", recu) == 0)
    { printf("Fichier non trouve\n");
    close(connexion) ;
    exit(0) ;
    }
/*Réception du fichier demandé*/
if ( strcmp("OK", recu) == 0)
    {
   
    if ( (fich = fopen("cpy_image","wb+")) != NULL)
      {
      while ( (n=read(connexion, recu, 100) ) > 0)
        {
        fwrite(recu, sizeof(char), n, fich);
        recu[n] = 0 ;
        }
      fclose(fich) ;
      }
    else printf("erreur fichier") ;
    }
   
close(connexion) ;
return 0 ;
}





mercredi 8 février 2006 à 17:44:04 | Re : transfert de fichier

doberman7578

je voudrai savoir si c'est possible de se connecter a un serveur sans entrer son ip, par exeple si il a 2 serveur sur le reseau le client se connecte au 2
mercredi 8 février 2006 à 19:16:51 | Re : transfert de fichier

wxccxw

Membre Club
c'est la 3 e fois que tu pose la question :)
je pense qu'il est posible de connecter si les ordi sont brancher a un switch/router
mercredi 8 février 2006 à 19:35:30 | Re : transfert de fichier

doberman7578

dans mon cas jsuis en reseau local mais je ne sai spas commen faire
mercredi 8 février 2006 à 20:36:22 | Re : transfert de fichier

wxccxw

Membre Club
recherche sur le site, sur dev.winsysdev.com et c.developpez.com
voila :)
mercredi 8 février 2006 à 20:46:27 | Re : transfert de fichier

doberman7578

tu peu me doner un lien
mercredi 8 février 2006 à 21:15:49 | Re : transfert de fichier

wxccxw

Membre Club
je sais pas il y a plein de code :) pour balancer sur un reseau
c'est toujours les meme IP tu te connect a
192,168,0,2 pour le premier ,3 pour le 2e et ,pour le 3e etc....
mercredi 8 février 2006 à 21:18:26 | Re : transfert de fichier

doberman7578

oue meme dans mon cas je ne connai pas ladresse du serveur aukelle je me connecter, je voudrai faire en sort  que des ke le client cherche un serveur, le serveur lui envoi son ip et ensuite il peut se conecter, mis je ne sais pas comment faire

mercredi 8 février 2006 à 21:29:42 | Re : transfert de fichier

wxccxw

Membre Club
alors la tu cherche la compliquation :)
mercredi 8 février 2006 à 21:59:00 | Re : transfert de fichier

doberman7578

commen fair alor, moi c'est un exo donc jpeu pa changer lenoncé

1 2

Cette discussion est classée dans : connexion, service, include, exit, addr


Répondre à ce message

Sujets en rapport avec ce message

probleme seeveur client [ par doberman7578 ] je voudrai avec ce serveur client transferer des jpeg mais sa ne marche pas et je ne comprend pas pourquoi,Pouvez vous m'aider svp, voici ce que j'ai client sur c++builder [ par doberman7578 ] Bonjour, Voila j'ai effectué un Serveur en C sur linux et je voudrais dans un premier tps savoir si je peut effectuer un Client/Serveur avec thread sous linux [ par frater_sinister ] J'ai un prblm avec ce programme. Avant tout le but de ce code: le client envoit un fichier au serveur, ce dernier renvoit le nombre de lignes/mots/let multicast en c sous windows [ par tenrod ] Bonsoir a tous,voila j'ai un petit (voire un gros) pb avec le développement d'une application me permettant de faire du multicast en c sous windows.J' probleme d'authentification [ par neofenix ] bonjour a tous et oui c'est encore moi ^^voila je crée un programme qui permet de creer un compte sur un serveur mysql et l'utilisateur peut ensuite s Comment savoir si une connexion TCP Existe [ par NESTLE ] Bonjour,Je cherche a savoir si ma connexion TCP existe toujours Voici mon code de Cnx :WSAStartup(MAKEWORD(2,0),&m_wsa);m_sin.sin_family = AF_INET;m_s Problème création de service sous Visual Studio 2005 (avec GetFilesAttributesA) [ par AmStErDaMnEd ] Bonjour, Je suis débutant en C++. Je dois créer un service tournant sur Windows XP pour mon entreprise. J'ai préalablement programmé mon outil en problème de connexion à une base de données dans C [ par boualiasma ] Salut,1)- Je voudrais connecter à une base des données crée sous Mysql  de version 5.1.30le dossier d'installation est : C:\Program Files\EasyPHP 3.0\ Demande d'aide c++ et requête SQL [ par juliette666 ] Bonsoir a tous pour commencer j'utilise visual studio 2010 (c++ console) et pour ma BD c'est MySQL. j'ai Connexion.h,Connexion.cpp et main.cpp voila C++ Connexion base SQL [ par sarcipus ] Bonjour, j'essaie tjs de réaliser un programme en C++ qui va interroger une base SQL. J'essaie de reprendre ligne par ligne un exemple d'internet afin


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,870 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales