-
TCP/UDP
Bonjour,
j'ai besoin de faire un serveur en relation avec plusieurs clients (une 20aine). (en c++ avec les sockets win)
J'ai pensé que le protocole tcp était plus adapté que l'udp. C'est pour faire transiter des données un peu comme un chat....
Par contre, est ce que je me trompe en pensant que le serveur ne peut être en relation qu'avec un seul client sur un même port ? Par conséquent il faudrait autant de ports que de clients ?
Merci d'avance :P
-
Tu te trompe, il peut y avoir 300client sur un même port, il faut juste que ton client boucle sur l'acoute du port.
-
ah bon, j'étais persuadé du contraire.... :oops:
Donc il n'y a pas d'interets à boucler sur un port N et attribuer un port i different pour chaque client, autant tout faire sur le même port non ? (en tcp tjrs)
-
Oui, je dirais même que la fasson a la quel tu penssais serais impossible :
Si tu écoute sur un port N, le client peut se connecter en X,Y,Z, il tomberas jamais sur ton serveur....
-
Oki merci bcp :D,
juste une derniere question de stratégie (côté serveur avec réseau ethernet):
-est ce que faire un tableau des sockets, puis verifier dans une boucle les status pour recevoir ou envoyer un message est une mauvaise solution ? (la boucle est dans un thread).
-Peut etre est il preferable d'attribuer un thread à chaque socket ou d'utiliser des sockets asynchrones ?
-
tu as le choix, en fait.
la fonction standard select() permet de vérifier simultanément l'état de plusieurs sockets, ensuite tu peux traiter l'un après l'autre ceux qui ont des données à traiter...
avec select(), tu peux tout faire dans le même thread, tout comme avec les fonctions spécifiques à Windows (notamment les sockets asynchrones). Sans select(), généralement tu te retrouve obligé d'utiliser un thread par client.
-
Oué c'est ce que je pensais,
merci beaucoup pour vos réponses :ccool: