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
|
#include <winsock2.h>
#include <stdio.h>
int main()
{
/* initialisation (Windows only) */
WSADATA WSAData;
WSAStartup(MAKEWORD(2, 0), &WSAData);
/* creation du socket en mode IP connecte (TCP) */
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
/* creation de la structure qui contient les informations technique du socket */
SOCKADDR_IN sin;
/* accepte n'importe quelle adresse de client */
sin.sin_addr.s_addr = INADDR_ANY;
/* protocole : IP */
sin.sin_family = AF_INET;
/* definition du port ecoute' */
sin.sin_port = htons(23);
/* attache le socket à l'adresse et au port défnini avant */
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
/* accepte jusqu'à 5 connexions simultanees. */
listen(sock, 5);
/* boucle des connexions */
while (1)
{
size_t tmp_taille = sizeof(sin);
/* attend le client... */
SOCKET csock = accept(sock, (SOCKADDR *) & sin, &tmp_taille);
if (csock != INVALID_SOCKET)
{
/* Fonctions a executer sur le socket.
ici, on devrait creer un thread par nouveau client...
On lui passe le socket et il se debrouille avec...
*/
printf("Client connected on socket %d\n", val);
}
else
{
printf("Connexion error\n");
}
}
WSACleanup ();
return 0;
} |