begin process at 2012 05 27 14:36:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > CLIENT SERVEUR POUR LE TRANSFERT DE FICHIER

CLIENT SERVEUR POUR LE TRANSFERT DE FICHIER


 Information sur la source

Note :
7,5 / 10 - par 2 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseaux & Internet Niveau :Débutant Date de création :16/04/2004 Date de mise à jour :20/04/2004 10:17:21 Vu / téléchargé :8 358 / 894

Auteur : seito

Ecrire un message privé
Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note

 Description

c'est un client/serveur simple qui permet de choisir un fichier sur le disque dur local et de l'envoyer vers un ordinateur appartenant au réseaux local

Source

  • le code pour le client:
  • HINSTANCE hInst;
  • #define PARAMETERS_OK 0
  • #define PARAMETERS_NOT_OK 1
  • #define MAXLEN_USERNAME 16
  • #define MINLEN_USERNAME 1
  • #define MAXLEN_LICENCE 10
  • #define MINLEN_LICENCE 8
  • #define MAXLEN_MACHINEID 32
  • #define MAXLEN_FILENAME 16
  • #define MAXLEN_FILEINFO 256
  • static char StrStatus[128];
  • // variable contenant le Fichier
  • static char StrFileName[32];
  • ////////////////////////////////////////////////////////
  • void UpdateDialogVariables(HWND hDlg);
  • void chemin(char* p);
  • BOOL WINAPI BrowseLicenceFile(HWND hWndOwner, LPSTR lpszFile, LPSTR lpszInitialDir,char *filterString);
  • void nom_fichiers(char* p,char* res);
  • ///////////////////////////////////////////////////////
  • /*//////////////////////main function\\\\\\\\\\\\\\\\\\*/
  • void CTfichierDlg::OnButton1()
  • {
  • // TODO: Add your control notification handler code here
  • int nrecv=0;
  • int nlecture=0;
  • int taille_file=0;
  • int interm=0;
  • CString s;
  • char *nom_fichier=new char[200];
  • char *buff=new char [1024];
  • char *buffer = new char[255];
  • char *taille_fichier=new char[100];
  • ///////////////////////////////////pour la boite
  • ///////////////////////////////////ouvrir
  • HWND hDlg= GetSafeHwnd();
  • char fileName[MAXLEN_FILEINFO];
  • char strFilterString[32];
  • char *res=new char[100];
  • char *inter=new char[100];
  • memset(fileName,0,sizeof(fileName));
  • memset(StrStatus,0,sizeof(StrStatus));
  • //Mise à jour du filtre de recherche de fichier
  • memset(strFilterString,0,sizeof(strFilterString));
  • sprintf(strFilterString," ALL FILES");
  • sprintf(&strFilterString[strlen(strFilterString)+1],"*.*");
  • BOOL th=BrowseLicenceFile(hDlg, fileName, ".\\",strFilterString) ;
  • //////////////////////////fin du traitement pour la boite ouvrir
  • sprintf(nom_fichier,"%s",fileName);
  • nom_fichiers(nom_fichier,inter);
  • chemin(nom_fichier);
  • FILE* f=fopen(nom_fichier,"rb");
  • fseek(f,0,SEEK_END);
  • taille_file=ftell(f);
  • itoa(taille_file,taille_fichier,10);
  • fseek(f,0,SEEK_SET);
  • WSADATA WSAData;
  • WSAStartup(MAKEWORD(1,1), &WSAData);
  • SOCKET sock;
  • SOCKADDR_IN sin;
  • /* tout est configuré pour accéder au serveur qui se trouve sur l'adresse 192.168.0.52*/
  • sock = socket(AF_INET, SOCK_STREAM, 0);
  • sin.sin_addr.s_addr = inet_addr("192.168.0.105");
  • sin.sin_family = AF_INET;
  • sin.sin_port = htons(21);
  • connect(sock, (SOCKADDR *)&sin, sizeof(sin));
  • send(sock,taille_fichier,strlen(taille_fichier),0);
  • interm=strlen(inter);
  • inter[interm]='\0';
  • send(sock,inter,100,0);
  • while(!feof(f))
  • {
  • nlecture=fread(buff,1,1024,f);
  • send(sock,buff,nlecture,0);
  • }
  • MessageBox("envoi reussi","r",1);
  • nrecv=recv(sock, buffer, 255, 0);
  • buffer[nrecv]='\0';
  • MessageBox(buffer,"reussi",0);
  • closesocket(sock);
  • WSACleanup();
  • fclose(f);
  • }
  • //////////////////////////////////////////////////////////////
  • ///////////////////derivated function////////////////////////
  • /////////////////////////////////////////////////////////////
  • BOOL WINAPI BrowseLicenceFile(HWND hWndOwner, LPSTR lpszFile, LPSTR lpszInitialDir,char *filterString)
  • {
  • OPENFILENAME ofn;
  • BOOL fStatus;
  • DWORD dwError;
  • if (NULL==lpszFile)
  • return FALSE;
  • memset((LPOPENFILENAME)&ofn, 0, sizeof(ofn));
  • ofn.lStructSize =sizeof(ofn);
  • ofn.hwndOwner =hWndOwner;
  • ofn.lpstrFile =lpszFile;
  • ofn.nMaxFile =MAXLEN_FILEINFO - 1;
  • ofn.lpstrFilter =(LPSTR)filterString;;
  • ofn.nFilterIndex=1;
  • ofn.lpstrTitle ="recherche de fichier";
  • ofn.hInstance = hInst;
  • ofn.lpTemplateName = NULL;
  • if (NULL != lpszInitialDir)
  • ofn.lpstrInitialDir = lpszInitialDir;
  • ofn.Flags= OFN_HIDEREADONLY ;
  • //On success, copy the chosen filename to the static display
  • fStatus = GetOpenFileName((LPOPENFILENAME)&ofn);
  • dwError = CommDlgExtendedError();
  • return fStatus;
  • }
  • // cette fonction extrait le chemin du fichier//
  • void chemin(char* p)
  • {
  • int taille= strlen(p);
  • char *inter=new char[100];
  • int i=0;
  • int j=0;
  • while(i<taille)
  • {
  • if(p[i]!='\\')
  • {
  • inter[j]=p[i];
  • }
  • else
  • {
  • inter[j]=p[i];
  • inter[++j]=p[i];
  • }
  • i++;
  • j++;
  • }
  • inter[j]='\0';
  • strcpy(p,inter);
  • }
  • //cette fonctionne extrait le nom de fichier//
  • void nom_fichiers(char* p,char* res)
  • {
  • int taille=strlen(p);
  • int j=taille;
  • int i=0;
  • char *s=new char[100];
  • while(p[taille]!='\\')
  • {
  • taille--;
  • }
  • taille++;
  • while(taille<j)
  • {
  • s[i]=p[taille];
  • taille++;
  • i++;
  • }
  • s[i]='\0';
  • strcpy(res,s);
  • }
  • /////////////////////////////////////////////////////////////////////////////////
  • ///////////////////////////////////pour le serveur///////////////////////////
  • ///////////////////////////////////////////////////////////////////////////////
  • void CServeurftpDlg::OnButton1()
  • {
  • int j=1;
  • int nrecv=0;
  • int n=0;
  • int taille_fichier=0;
  • char *buffer= new char[100];
  • char *buff= new char[1024];
  • char *nom_fichier=new char[30];
  • WSADATA WSAData;
  • FILE* fh;
  • WSAStartup(MAKEWORD(1,1), &WSAData);
  • SOCKET sock;
  • SOCKET csock;
  • SOCKADDR_IN sin;
  • SOCKADDR_IN csin;
  • sock = socket(AF_INET, SOCK_STREAM, 0);
  • sin.sin_addr.s_addr = INADDR_ANY;
  • sin.sin_family = AF_INET;
  • sin.sin_port = htons(21);
  • bind(sock, (SOCKADDR *)&sin, sizeof(sin));
  • listen(sock, 0);
  • while(j!=0)
  • {
  • int sinsize = sizeof(csin);
  • if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
  • {
  • nrecv=recv(csock,buffer,strlen(buffer),0);
  • buffer[nrecv]='\0';
  • taille_fichier=atoi(buffer);
  • memset(buffer,0,strlen(buffer));
  • n=recv(csock,buffer,100,0);
  • buffer[n]='\0';
  • MessageBox(buffer,"",1);
  • fh=fopen(buffer,"wb");
  • do
  • {
  • nrecv=recv(csock,buff,1024,0);
  • fwrite(buff,1,nrecv,fh);
  • taille_fichier-=nrecv;
  • }
  • while(taille_fichier>0);
  • send(csock, "Hello world!\r\n", 14, 0);
  • j=0;
  • MessageBox(buffer,"r",0);
  • }
  • }
  • fclose(fh);
  • closesocket(sock);
  • closesocket(csock);
  • WSACleanup();
  • }
le code pour le client:
HINSTANCE hInst;	
#define PARAMETERS_OK 0
#define PARAMETERS_NOT_OK 1

#define MAXLEN_USERNAME 16
#define MINLEN_USERNAME 1
#define MAXLEN_LICENCE 10
#define MINLEN_LICENCE 8
#define MAXLEN_MACHINEID 32
#define MAXLEN_FILENAME 16
#define MAXLEN_FILEINFO 256
static char StrStatus[128];
// variable contenant le Fichier 
static char StrFileName[32];
////////////////////////////////////////////////////////
void UpdateDialogVariables(HWND hDlg);
void chemin(char* p);
BOOL WINAPI BrowseLicenceFile(HWND hWndOwner, LPSTR lpszFile, LPSTR lpszInitialDir,char *filterString);
void nom_fichiers(char* p,char* res);
///////////////////////////////////////////////////////

/*//////////////////////main function\\\\\\\\\\\\\\\\\\*/
void CTfichierDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	
	int nrecv=0;
	int nlecture=0;
	int taille_file=0;
	int interm=0;
	CString s;
	char *nom_fichier=new char[200];
	char *buff=new char [1024];
	char *buffer = new char[255];
	char *taille_fichier=new char[100];
	
	///////////////////////////////////pour la boite 
                ///////////////////////////////////ouvrir 
	HWND hDlg= GetSafeHwnd();
	char fileName[MAXLEN_FILEINFO];
	char strFilterString[32];
	char *res=new char[100];
	char *inter=new char[100];
	memset(fileName,0,sizeof(fileName));
	memset(StrStatus,0,sizeof(StrStatus));
	//Mise à jour du filtre de recherche de fichier
	memset(strFilterString,0,sizeof(strFilterString));
	sprintf(strFilterString," ALL FILES");
	sprintf(&strFilterString[strlen(strFilterString)+1],"*.*");
	BOOL th=BrowseLicenceFile(hDlg, fileName, ".\\",strFilterString) ;
	//////////////////////////fin du traitement pour la boite ouvrir 
	sprintf(nom_fichier,"%s",fileName);
	nom_fichiers(nom_fichier,inter);
	chemin(nom_fichier);
	FILE* f=fopen(nom_fichier,"rb");
	fseek(f,0,SEEK_END);
	taille_file=ftell(f);
	itoa(taille_file,taille_fichier,10);
	fseek(f,0,SEEK_SET);
	WSADATA WSAData;
	WSAStartup(MAKEWORD(1,1), &WSAData);
	SOCKET sock;
	SOCKADDR_IN sin;
	/* tout est configuré pour accéder au serveur qui se trouve sur l'adresse 192.168.0.52*/
	sock = socket(AF_INET, SOCK_STREAM, 0);
	sin.sin_addr.s_addr			= inet_addr("192.168.0.105");
	sin.sin_family				= AF_INET;
	sin.sin_port				= htons(21);
	connect(sock, (SOCKADDR *)&sin, sizeof(sin));
	send(sock,taille_fichier,strlen(taille_fichier),0);
	interm=strlen(inter);
	inter[interm]='\0';
	send(sock,inter,100,0);
	while(!feof(f))
	{
		nlecture=fread(buff,1,1024,f);
		send(sock,buff,nlecture,0);
	}
	MessageBox("envoi reussi","r",1);
	nrecv=recv(sock, buffer, 255, 0);
	buffer[nrecv]='\0';
	MessageBox(buffer,"reussi",0);
	closesocket(sock);
	WSACleanup();
	fclose(f);
	

}
//////////////////////////////////////////////////////////////
///////////////////derivated function////////////////////////
/////////////////////////////////////////////////////////////

BOOL WINAPI BrowseLicenceFile(HWND hWndOwner, LPSTR lpszFile, LPSTR lpszInitialDir,char *filterString)    
{       
	OPENFILENAME   ofn;
	BOOL           fStatus;
	DWORD          dwError;

	if (NULL==lpszFile)       
		return FALSE;     



   memset((LPOPENFILENAME)&ofn, 0, sizeof(ofn));    

   ofn.lStructSize =sizeof(ofn);    
   ofn.hwndOwner   =hWndOwner;    
   ofn.lpstrFile   =lpszFile;    
   ofn.nMaxFile    =MAXLEN_FILEINFO - 1;    
   ofn.lpstrFilter =(LPSTR)filterString;;    
   ofn.nFilterIndex=1;    	   
   ofn.lpstrTitle  ="recherche de fichier";    
   ofn.hInstance = hInst;    
   ofn.lpTemplateName = NULL;    
   if (NULL != lpszInitialDir)      
	   ofn.lpstrInitialDir = lpszInitialDir;     
   ofn.Flags= OFN_HIDEREADONLY  ;  

   //On success, copy the chosen filename to the static display    
   fStatus = GetOpenFileName((LPOPENFILENAME)&ofn);    
   dwError = CommDlgExtendedError();
   return fStatus; 
}

// cette fonction  extrait le chemin du fichier//
void chemin(char* p)
{
	int taille= strlen(p);
	char *inter=new char[100];
	int i=0;
	int j=0;
	while(i<taille)
	{
		if(p[i]!='\\')
		{
			inter[j]=p[i];
			
		}
		else
		{
			inter[j]=p[i];
			inter[++j]=p[i];
		}
		i++;
		j++;
	}
	inter[j]='\0';
	strcpy(p,inter);
}

//cette fonctionne extrait le nom de fichier//
void nom_fichiers(char* p,char* res)
{
	int taille=strlen(p);
	int j=taille;
	int i=0;
	char *s=new char[100];
	while(p[taille]!='\\')
	{
		taille--;
	}
	taille++;
	while(taille<j)
	{
		s[i]=p[taille];
		taille++;
		i++;
	}
	s[i]='\0';
	strcpy(res,s);
}
/////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////pour  le serveur///////////////////////////
///////////////////////////////////////////////////////////////////////////////

void CServeurftpDlg::OnButton1() 
{
                int j=1;
	int nrecv=0;
	int n=0;
	int taille_fichier=0;
	char *buffer= new char[100];
	char *buff= new char[1024];
	char *nom_fichier=new char[30];
	WSADATA WSAData;
	FILE* fh;
	WSAStartup(MAKEWORD(1,1), &WSAData);
	SOCKET sock;
	SOCKET csock;
	SOCKADDR_IN sin;
	SOCKADDR_IN csin;
	sock = socket(AF_INET, SOCK_STREAM, 0);
	sin.sin_addr.s_addr			= INADDR_ANY;
	sin.sin_family				= AF_INET;
	sin.sin_port				= htons(21);
	bind(sock, (SOCKADDR *)&sin, sizeof(sin));
	listen(sock, 0);
	while(j!=0)
	{
	int sinsize = sizeof(csin);
	if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
	{

	nrecv=recv(csock,buffer,strlen(buffer),0);
	buffer[nrecv]='\0';
	taille_fichier=atoi(buffer);
	memset(buffer,0,strlen(buffer));
	n=recv(csock,buffer,100,0);
	buffer[n]='\0';
	MessageBox(buffer,"",1);
	fh=fopen(buffer,"wb");
	
	do
	{
		nrecv=recv(csock,buff,1024,0);
		fwrite(buff,1,nrecv,fh);
		taille_fichier-=nrecv;
	}
	while(taille_fichier>0);
	send(csock, "Hello world!\r\n", 14, 0);
	j=0;
	MessageBox(buffer,"r",0);
	}
	}
	fclose(fh);
	closesocket(sock);
	closesocket(csock);
	WSACleanup();
}

 Conclusion

pour le client et le serveur vous  creer un simple bouton et vous inserer le code
si quelqu'un peut l'améliorer afin que ça marche sur internet je lui serais reconnaissant.
le serveur se bloque si vous tenter de l'utiliser deux fois.
et merci à ceux dont je me suis inspiré de leur code

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture LOGICIEL DE CHAT EN RESEAUX LOCAL

 Sources de la même categorie

Source avec Zip Source avec une capture MINI SERVEUR HTTP [WINDOWS] par ganjarasta
Source avec Zip Source avec une capture CLIENT DE TEST MODBUS TCP par brunovan
Source avec Zip Source avec une capture SCANIP [ARP / ICMP] par ganjarasta
Source avec Zip Source avec une capture TRACEROUTE [WINPCAP] par ganjarasta
Source avec Zip SERVEUR MULTITHREAD [LINUX/WIN] par nipepsinicolas

Commentaires et avis

Commentaire de Urgo le 16/04/2004 22:06:56

Zip please

Commentaire de seito le 19/04/2004 17:12:22

j'ai ajouté le zip

Commentaire de TeLeTUbIz le 19/04/2004 19:25:51

Euh... Essayant de télécharger le zip je n'ai vu que des fichiers textes avec du code pour intégrer formellement une fonction. Est-ce un bug du serveur ou de chez toi ?

Commentaire de seito le 19/04/2004 21:51:08

c'est un bug du serveur je crois parceque je suis sur d'avoir mis la sources mais je vais essayer de remettre la source

Commentaire de seito le 19/04/2004 21:51:28

c'est un bug du serveur je crois parceque je suis sur d'avoir mis la sources mais je vais essayer de remettre la source

Commentaire de seito le 20/04/2004 10:18:58

cette fois si j'espére que le zip va marcher

Commentaire de takuma le 21/04/2004 17:48:01

le zip ça marche je vais voir et t'envoyer mes remarques plus tard

Commentaire de ramziman le 06/05/2004 22:26:38

Salut
ca sera tres gentil si vous introduisez la version linux de ce programme client/server.

Commentaire de seito le 10/05/2004 10:16:27

désolé mais je m'y connais pas trop dans l'environnement linux,
eh oui il y en a encore des ignorants qui se fient à microsoft ;)

Commentaire de CptLuthor le 08/11/2004 15:59:23

salut
Moi je voudrai réaliser un client et un server VPN le plus simple possible, c a d je lance le server (un .exe tout petit) , mes pots lancent chacun le client ( un .exe tout petit )  et hop  on est connecté à distance et on se voit sur le réseau.

je précise je ne ve pas de service de messagerie, c a d je ve juste quon se voi en reseau comme ca on se voit dans les jeux comme si on été en reseau local.

voila merci à ce qui pourront maider

Commentaire de seito le 12/11/2004 14:56:14

je vais voir ce que je peux faire pour toi il y a une source ou deux qui traine chez moi il suffit de mettre la main dessus je te tiendrais au courant

Commentaire de CptLuthor le 13/11/2004 11:29:56

ok merci c cool , jattend avec impatience

a+

Commentaire de CptLuthor le 20/11/2004 10:15:47

alors seito tu as pu trouver qqch pour moi ?
merci

Commentaire de CptLuthor le 30/11/2004 16:53:17

j'attend toujours !!

merci bcp car j'en ai vraiment besoin

Commentaire de seto1981 le 09/12/2004 07:27:06

salut,

juste pour savoir si qqn aurait des sources pour faire un client serveur tout simple avec une gestion d'utilisateur avec droits d'accès.
je ne veux pas de service de messagerie non plus.

merci d'avance pour votre aide

Commentaire de CptLuthor le 09/12/2004 08:38:05

tu veux qu'il serve à quoi ton client server ? car tout le pb est la

Commentaire de seito le 10/12/2004 23:58:43

bonsoir les gars, je suis de retour.
désolé Cptluthor mais jétais en train de déménager et j'avais tous les problêmes qui vont avec ton probléme est simple cette version du serveur mais avec une gestion des thread j'essaierais de faire un petit programme pour toi pour la semaine prochaine . et mon client serveur est un simple programme de base c'est comme un noyeux avec toutes les fonctionnalités de bases que tu peux modifier et modéler à volanté have fun et désolé si je me suis retardé à répondre(1000000000000 désolé et pardon)

Commentaire de CptLuthor le 11/12/2004 09:21:14

ok merci c'est vraiment sympas, n'hésites pas à commenter le code, car je viens de commencer le C avec mon école et comme ça je pourrai comprendre un peu car ça m'interesse autant de l'utiliser que de savoir comment ça marche.

thx ++

Commentaire de CptLuthor le 18/12/2004 20:54:36

tu t'en sors ?

gl

Commentaire de mounan le 28/10/2009 17:47:22

dsl mé comment je peux telecharger le fichier.exe

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 1,747 sec (3)

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