int
serveur_tcp (void)
{
    int sock_contact;
    int sock_connectee;
    struct sockaddr_in adresse;
    socklen_t longueur;

    sock_contact = cree_socket_stream (NULL, NULL, "tcp");
    if (sock_contact < 0)
        return (-1);
    listen (sock_contact, 5);
    fprintf (stdout, "Mon adresse >> ");
    affiche_adresse_socket (sock_contact);
    while (! quitter_le_serveur ()) {
        longueur = sizeof (struct sockaddr_in);
        sock_connectee = accept (sock_contact, & adresse, & longueur);
        if (sock_connectee < 0) {
            perror ("accept");
            return (-1);
        }
        switch (fork ()) {
            case 0 : /* fils */
                close (sock_contact);
                traite_connexion (sock_connectee);
                exit (0);
            case -1 :
                perror ("fork");
                return (-1);
            default : /* père */
                close (sock_connectee);
        }
    }
    return (0);
}
Example #2
0
int serveur (void)
{
	int sock_contact;
	int sock_connectee;
	struct sockaddr_in adresse;
	socklen_t longueur;

	sock_contact = cree_socket_stream(NULL, NULL, "UDP");
	if (sock_contact < 0)
		return -1;
	listen(sock_contact, 5);
	fprintf(stdout, "Mon adresse >>\n");
	affiche_adresse_socket(sock_contact);
	while(! quitter())
	{
		longueur = sizeof(struct sockaddr_in);
		sock_connectee = accept(sock_contact, (struct sockadrr *)& adresse, & longueur);
		if(sock_connectee < 0)
		{
			perror ("accpet");
			return -1;
		}
		switch (fork())
		{
			case 0:
			close(sock_contact);
			connexion(sock_connectee);
			exit(EXIT_SUCCESS);
			case -1:
			perror("fork");
			return -1;
			default:
			close(sock_connectee);
		}
	}
	return 0;
}