Canevas serveur unix ( linux) v1.0

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 171 fois - Téléchargée 39 fois

Contenu du snippet

Ce canevas serveur permet de cree un serveur sous unix
il faut bien sur lui ajouter les fonctions que vous souhaiter -- exemple serveur echo,chat,donnees .....

Source / Exemple :


// Ecrits par NiChaN  --- ***The EaTo By NiChaN***
// www.EaTo.fr.st
// 22/06/2002 
// Petit canevas de serveur unix
// ici il fonctionne en temps que serveur d'echo
// mais peut tous a fait etre utilise pour une application plus grande
// comme un serveur de discution : CHAT 
// ou bien un serveur de stockage de donnée !
// Utilisation mode console :
// Cree des fonctions avec renvoye de valeur si vous desirer l'utiliser en mode graphique !
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <linux/in.h>
#include <netdb.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>
#include <stdio.h>

int main (int argc ,char* argv[])
{
long int retour;
FILE* pfile;
struct sockaddr_in sin, from;
struct servent *sp;
struct hostent *hp;
int s;
char buffer[100];
char *taille;
char *pfichier;
int test;

   bzero ((char*) &sin, sizeof sin);
   sin.sin_family = AF_INET;
   sin.sin_port = htons (9999);
   if ((s= socket (AF_INET, SOCK_STREAM, 0)) <0)
   {
     perror ("socket");
     exit (1);
   }
   if (bind (s,(struct sockaddr*) &sin, sizeof(sin)) < 0)
   {
     perror ("bind");
     exit (2);
   }
 listen (s,4);
 for(;;)
  {
  int g,len;

  len = sizeof from;
  g = accept (s,(struct sockaddr*) &from, &len);
  if (g < 0)
   {
     perror ("accept");
     continue;
   }
  switch (fork ())
    {
    case -1:
      perror ("fork");
      exit (3);

    case 0:
      close (s);
/* Service rendu */
	recv(g,buffer,sizeof(buffer),0);
	pfile=fopen(buffer,"r");
	 if(pfile==NULL)
	 {
	     printf("le fichier n' existe pas!!!");
	    	retour=-1;
	    	exit(0);
	 }     
	fseek(pfile,0L,SEEK_END);
	retour=ftell(pfile);
	taille=fread(taille,buffer,sizeof(buffer),pfile);
	printf("retour : %d\nfichier :%s\ncontenu du fichier : %d\n",retour,
			buffer,taille);
	fflush(stdout);
///*********** TouTe MoDiFiCaTiOn a effectuer ICI : *******************//
// SERVEUR ECHO : exemple ::
	send(g,&retour,sizeof(retour),0);	 	
	
	send(g,&pfile,sizeof(retour),0);

//......................................//..........................
		
      close(g);
      exit (0);

    default:
      close(g);
    }
  
  }
}

Conclusion :


Aucun bug connu a ce jour , si vous en avez un ; Merci de me le faire parvenir!!

A voir également

Ajouter un commentaire Commentaire
Messages postés
14
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
12 mars 2005

huummm je vais site tester cela
il me parait bien cool :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.