begin process at 2012 05 30 18:26:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

TCP/IP


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

TCP/IP

mardi 4 novembre 2003 à 11:54:34 | TCP/IP

maitrez


Bonjour à tous,

je suis en train de créer une appli client et une appli serveur. L'appli client est un jeu qui représente pour l'instant une petite voiture. Elle se connecte sur le serveur, et lorsqu'il y a deux clients connectés, ils se voient mutuellement.

Mon problème est que les envois de coordonnées d'un client à l'autre (en passant par le serveur) est tres lent. Le client 1 envoit ses coordonnées au serveur qui lui, renvoit tout ça au client 2.

Pour faire l'application serveur, je suis parti d'un prog que j'ai trouvé sur cppfrance (lanchat je crois). En cherchant un peu d'où mes problèmes pouvaient venir, j'ai compris qu'il créait un thread par client connecté. Je voudrais savoir si c'est une bonne méthode, ou s'il vaut mieux uniquement créer un seul thread qui servira à écouter. D'où un deuxième question: Lorsque plusieurs clients envoient énormément d'infos au serveur, peut-on être sûr qu'il traitera tous les messages reçus, meme s'il prends du retard dans son traitement?

Merci pour vos réponses
MzF
mardi 4 novembre 2003 à 12:27:21 | Re : TCP/IP

Anacr0x

plutot qu'un thread par client, utilise select() ou WSAAsyncSelect()

regarde la, ca pourra peut-etre t'aider :
http://www.cppfrance.com/article.aspx?Val=2276
mardi 4 novembre 2003 à 12:46:53 | Re : TCP/IP

aardman

Membre Club
Salut,
Ou mieux, WSAEventSelect().
mardi 4 novembre 2003 à 14:01:05 | Re : TCP/IP

maitrez


Cool, merci :)
par contre, je pense que ça va me faire changer pas mal de choses dans mon appli serveur... M'enfin, du moment que ça marche.... ;)

C'est quoi en gros, le principe de ces fonctions? (Select, WSAAsyncSelect et WSAEventSelect) elle doivent remplacer quoi?

A+
MzF
mardi 4 novembre 2003 à 18:01:32 | Re : TCP/IP

aardman

Membre Club
Salut,
Elle remplacent rien, c'est juste des modeles d'utilisation de winsock.
Select(...) te permet de gerer plusieurs clients dans un seul thread, et apres reflexion je me suis dit comme Anacrox que c'etait la meilleure solution a ton probleme (car ca marche bien et assez simple a utiliser).
WSAAsyncSelect(...) est bien pour faire des clients avec interface graphique, mais rien de plus (avis perso).
WSAEventSelect(...) te permet de faire comme select, mais c'est plus compliqué (avec de meilleures performances bien entendu).
Y'en a d'autres encore, mais j'en parle pas car je les connais pas trop.
mardi 4 novembre 2003 à 23:30:22 | Re : TCP/IP

maitrez


Hello,

merci pour la précision. Par contre, je recherche quand meme la performance, même si je dois passer un peu plus de temps à comprendre comment ça fonctionne. C'est beaucoup plus complexe ou ça se comprend bien quand même?
Autre chose, mes clients sont avec des interfaces graphiques puisqu'il s'agit d'un jeu qui se connecte à un serveur online.

A+
MzF
mardi 4 novembre 2003 à 23:57:47 | Re : TCP/IP

aardman

Membre Club
Salut,
Niveau performance, si tu as peu (<100) de client tu verra pas la difference entre les 2.
WSAEventSelect(...) utilise des threads, select(...) pas obligatoirement. Pour moi le choix est vite fait quand on connait les problemes que les threads peuvent poser.

Sinon, un truc completement a part, c'est que le protocol UDP est plus rapide que TCP, et comme tu ne va envoyer que des coordonnées de temp en temp je pense que c'est plus adapté (avis perso).
mercredi 5 novembre 2003 à 12:45:52 | Re : TCP/IP

maitrez


Re,

ok pour la première partie de ton post... en fait, à terme il devrait y avoir plus de 100 clients... Enfin, dans un premier temps, ça peut largement suffir.

Par contre, pour la deuxieme partie, le protocole UDP est bien en non-connecté, c'est ça?
Le truc, c'est que le jeu envoi sans cesse au client des tas de choses, les coordonnées sont sans cesse changeantes... donc chaque client envoi beaucoup de données au serveur et lui-meme renvoit à beaucoup de clients... alors? UDP ou TCP ? that is the question ;)

A+
MzF
mercredi 5 novembre 2003 à 13:35:40 | Re : TCP/IP

aardman

Membre Club
Salut,
UDP est non connecté en effet, c'est a dire moins securisé mais legerement plus rapide (pas de connexion a établir, pas d'accusé de reception, etc...).
mercredi 5 novembre 2003 à 14:02:12 | Re : TCP/IP

maitrez


Ouaip, mais il me semblait que les jeux étaient plutot basés sur du tcp plutot que de l'udp...
Je te remercie pour tous ces détails, je vais essayer de partir sur le Select (ou p-e le WSAEventSelect). J'espère que je trouverai des exemples d'utilisation de ces fonctions, et que je pourrai adapter mon prog en conséquences...

A+
MzF

1 2

Cette discussion est classée dans : appli, serveur, client, ip, tcp


Répondre à ce message

Sujets en rapport avec ce message

Client/Serveur TCP/IP [ par shinji09 ] Bonjours, je suis entrain de faire un client/serveur dans le cadre d'un projets, alors j'arrive a faire ma liaison, a recevoir des données, par contre Serveur TCP/IP en Dynamic C [ par joffreycolors ] Bonjour,j'aurais voulu savoir si quelqu'un aurais un serveur TCP/IP en C ou encore mieu en Dynamic Cje n'arrive pas a en trouver..mon client est fait programmation socket [ par hanaw ] Comment écrire un programme simple communication client serveur en TCP/IP en C qui retourne au serveur un message contenant l'adresse IP du client. Probleme Communication CLIENT SERVEUR FTP [ par kididouille ] Bonjour, je voudrais savoir comment dire à un client qu'un serveur accepte sa demande de connexion? Mon client: Filezilla Mon serveur: en cours de Question sur l'héritage [ par hnouna2007 ] salut, D'après mes connaissances, quand on défini une classe dérivée, son constructeur appelle automatiquement celui de la classe de base. Ce que j'ai Serveur TCP/IP [ par Zestyr ] Quand on fais fctnner un serveur, il faut le débloquer du par feu et configurer le modem, y a t'il un moyen pour automatiser ces manip ou contourner la bande passante disponible entre le client et le serveur en tcp [ par coolol ] Bonjour, je veux savoir comment faire pour calcule la bande passante entre le client et le serveur en Tcp sous linux avec le langage C, et comment tr problème serveur TCP en C [ par lenneth666 ] Bonjour j'ai essayé de faire un client server TCP en C mais mon serveur bloque a l'instruction suivante : client_socket = accept( ma_socket,(struct Identifier un Client via Socket IP - C++ [ par Jeff_Trek ] Bonjour,J'utilise un Serveur (Socket IP), J'aimerais identifier les clients qui se connecte et déconnecte.Je connais les adresses IP des clients.Si Cl Client - Serveur . TCP [ par sebounty ] Bonjour,Je suis, comme qui dirais debutant en Programmation C, C++.Aujourd'hui j'aimerais réaliser un Client Serveur TCP, Cependant, tous les codes qu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,997 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales