serveur en C

serveur en C - C - Programmation

Marsh Posté le 31-05-2005 à 11:34:47    

Bonjour
Je voudrai savoir quelle fonction faut il utiliser pour lancer un serveur en C avec toujours le meme numero de port. Car quand je lance mon serveur a chaque fois je suis oblige de changer le numero du port sinon erreur.
Merci

Reply

Marsh Posté le 31-05-2005 à 11:34:47   

Reply

Marsh Posté le 31-05-2005 à 11:36:36    

socket(), bind(), listen() etc...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 31-05-2005 à 11:44:36    

Quand j'utilise le meme port je recoie erreur bind

Reply

Marsh Posté le 31-05-2005 à 11:49:41    

poste le source stp


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 31-05-2005 à 11:54:54    

voici la source:
 
void    add_server(t_env *e)
{
  int                   s;
  struct sockaddr_in    sin;
 
  s = socket(PF_INET, SOCK_STREAM, 0);
  sin.sin_family = AF_INET;
  sin.sin_port = htons(e->port);
  sin.sin_addr.s_addr = INADDR_ANY;
  if ((bind(s, (struct sockaddr*)&sin, sizeof(sin))) == -1)
    {
      my_putstr("bind" );
      exit (1);
    }
  if (listen(s, 42) == -1)
    exit (1);
  e->fd_type[s] = FD_SERVER;
  e->fct_read[s] = server_read;
  e->fct_write[s] = NULL;
}

Reply

Marsh Posté le 31-05-2005 à 12:03:55    

normal tu ne ferme jamais tes sockets quand ton serveur quitte
 
utilise close ou free

Reply

Marsh Posté le 31-05-2005 à 12:04:17    

Essaye ça :

Code :
  1. int reuse = 1;
  2. r = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (int *)&reuse, sizeof(reuse));
  3. if (r == -1) {
  4. perror("setsockopt: SO_REUSEADDR" );
  5. };


AVANT le bind()


Message édité par Mr Mala le 31-05-2005 à 12:07:57
Reply

Marsh Posté le 31-05-2005 à 12:08:33    

il est ou le accept() ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 31-05-2005 à 16:32:34    

ok merci ca a l air de marcher

Reply

Sujets relatifs:

Leave a Replay

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