HelllOOoooO!

Voilou, j'ai un gros problème.

J'arrive a faire un serveur qui lorsque qu'un client se connecte, lui envoie un message.

Mais je n'arrive pas à ce que, une fois le premier client connecté, il attend le second client avant d'envoyer ses données.

J'ai essayé pleins de codes différents sans réussite.

La fonction accept n'est pas bloquante?


Voici un des codes:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <winsock2.h>
    typedef int socklen_t;
 
 
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
 
#define PORT 23
 
 
 
int main(void)
{
 
        WSADATA WSAData;
        int erreur = WSAStartup(MAKEWORD(2,2), &WSAData);
        int continuer=1;
        int i;
 
 
    SOCKET sock0;
    SOCKET sock1;
 
    SOCKADDR_IN sin0;
    SOCKADDR_IN sin1;
 
 
 
    SOCKADDR_IN csin0;
    SOCKADDR_IN csin1;
 
    int recsize0 = sizeof sin0;
    int recsize1 = sizeof sin1;
    char prenom1[20]="Nico";
 
    char prenom2[20]="Alban";
 
    int sock_err;
 
 
        sock0 = socket(AF_INET, SOCK_STREAM, 0);
 
 
 
            printf("La socket %d est maintenant ouverte en mode TCP/IP\n", sock0);
            printf("La socket %d est maintenant ouverte en mode TCP/IP\n", sock1);
 
            sin0.sin_addr.s_addr = htonl(INADDR_ANY);
            sin0.sin_family = AF_INET;
            sin0.sin_port = htons(PORT);
 
            sin1.sin_addr.s_addr = htonl(INADDR_ANY);
            sin1.sin_family = AF_INET;
            sin1.sin_port = htons(PORT);
 
 
            bind(sock0, (SOCKADDR*) &sin0, recsize0);
 
 
 
                listen(sock0, 5);
 
                  int crecsize0 = sizeof csin0;
 
                SOCKET csock0 = accept(sock0, (SOCKADDR *) &csin0, &crecsize0);
 
 
 
 
                bind(sock1, (SOCKADDR*) &sin1, recsize1);
                listen(sock1, 5);
 
                int crecsize1 = sizeof csin1;
                SOCKET csock1 = accept(sock1, (SOCKADDR *) &csin1, &crecsize1);
 
 
 
 
 
                    while(1)
                    {
 
 
                           send(csock0, prenom1, sizeof(prenom1), 0);
                           send(csock1, prenom2, sizeof(prenom2), 0);
 
 
                            closesocket(csock0);
                            closesocket(csock1);
 
 
                        }
 
 
        WSACleanup();
 
 
    return EXIT_SUCCESS;
}