begin process at 2008 09 06 20:08:53
1 237 931 membres
313 nouveaux aujourd'hui
14 314 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TUTORIAL WINSOCK TCP/IP PAR L'EXEMPLE


Information sur la source

Catégorie :Tutoriaux Niveau : Débutant Date de création : 18/03/2004 Vu / téléchargé: 5 530 / 1 319

Note :
9,63 / 10 - par 8 personnes
9,63 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

Description

Voici un petit code que j'ai développé pour apprendre a me servir de WinSock.

Il casse pas des briques, mais pour ceux qui n'y connaissent rien, ça permet de voir comment peut fonctionner une application multi clients / Serveur en évitant les premiers pièges.

Je me suis aussi servi du tuto de celiphane pour voir la partie théorique :
"http://www.vbfrance.com/code.aspx?ID=4644"

Conclusion

Je sais très bien que c'est la millième application qui intègre Winsock, alors inutile de me le rappeler.

Par contre ceux qui ont des remarques constructives, ne vous gênez pas. Même si c'est : 'ton code est mal construit, on comprend rien'

Et pour ceux qui mettraient une note, prenez le temps de mettre un petit mot avec, ça permet aussi d'avancer.

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de thierrydelepine le 18/03/2004 17:39:00

    Cet exemple est tres bien fait, commenté. 10/10
    J'ai une petite question auquel je suis confronté sur une appli multi client peut être aura tu une idée.
    j'ai parfaitement reussi a faire dialoguer plusieurs clients avec un serveur mais cela marche bien tant que les donnees echangés on un débit limité (par exemple echange de texte dans un chat ) par contre si je transfert des fichiers en flux continu ( des que le client recoit le packet, il redemande de suite un nouveau packet au serveur) et bien là, mon serveur ne repond plus qu'au client qui telecharge, les autres clients peuvent ouvrir une connexion avec le serveur sans probleme mais les senddata qu'ils font ne sont pas traités par le serveur ???

    Si tu as une idée ou un autre utilisateur, je suis preneur.

    Merci d'avance.

  • signaler à un administrateur
    Commentaire de Pat35 le 18/03/2004 17:51:59

    Tous d'abords merci pour la note, ça fait toujours plaisir.

    Pour ton problème, essaye de mettre des "DoEvents" après chaque lecture ou écriture sur la socket si c'est pas déjà fait.

    Je suis pas tombé sur un cas de blocage comme ça, mais en faisant mes recherches, j'ai vu que ça pouvait être la solution a ton type de problème.

  • signaler à un administrateur
    Commentaire de thierrydelepine le 18/03/2004 18:02:15

    J'ai deja fait des tests en mettant un DoEvents, le problème c'est que le DoEvents dit a mon appli de gerer les evenements WINDOWS, donc si un autre client fait un SendData, c'est un evenement, donc le Winsock_DataArrival traite la nouvelle demande, mais n'a pas traité la demande qu'il etait en train de traiter avant de lancer le DoEvents. Donc du coup le serveur ne traite plus rien car si le flux est continu avec plusieurs clients chaque appel a DoEvents fait que le client repart au debut de la Sub Winsock_DataArrival mais sans traiter la demande precedente. J'espere avoir été clair dans mon explication.

  • signaler à un administrateur
    Commentaire de starfighter le 18/03/2004 20:33:30

    Bonjour a tous,
    Utilise un drapeau avec une file d'attente

  • signaler à un administrateur
    Commentaire de jp50 le 19/03/2004 02:15:54

    J'ai un portable qui n'avait pas internet d'installé quand on l'a acheté. J'ai installé internet, mais winsock n'est pas installé. Si je le copie de mon autre ordinateur il donne une erreur. Est-ce que quelqu'un sait ou telecharger winsock. J'utilise win 98.

    JP50

  • signaler à un administrateur
    Commentaire de Pat35 le 19/03/2004 09:11:07

    Pour thierrydelepine :

    Le DoEvents est à mettre une fois que tu as traité la demande (juste après le SendData en fait). De cette façon, en théorie, le système transmet les messages non traités sans libérer la socket qui était active. Tu devrais donc recevoir le DataArrival de la part des autres clients ouverts et pouvoir les traiter avant que le premier client ne te refasse une demande.

    Si ça ne marche pas, ou si tu avais déjà essayé, je ne voie plus qu'ouvrir une socket en UDP pour les transferts de donnés importants.

    Pour jp50 :

    Essaye de faire un package d'un prog qui intègre WinSock et installe le sur ton portable, ça devrai l'enregistrer proprement dans le système.

  • signaler à un administrateur
    Commentaire de thierrydelepine le 19/03/2004 09:46:19

    Je vous remercie de tous ces conseils et du temps que vous y passé, j'ai deja fait beaucoup de test avec les DoEvents en les mettant à la fin, au debut apres le senddata de mon serveur et toujours probleme.
    Etend donné que je fais des transferts sans timer,c'est très rapide, par contre je pense qu'il faut que je traite le probleme sous forme de liste, ce serai peut être la solution pusique le serveur traiterai les demandes a son rythme.

    POUR starfighter
    Pourrais tu me donner plus de détail à ton explication.
    Merci.

  • signaler à un administrateur
    Commentaire de starfighter le 19/03/2004 10:00:19

    1 - Lorsque tu fais Winsock_SendData pour ton client, tu met le drapeau a occupé, lorsqu'il a traite la demande tu met le drapeau a libre

    2 - Lorsque un client te fais une demande tu regarde si ton drapeau est libre, si oui tu accepte sa demande et tu vas a l'etape 1 sinon, Tu ajoute dans la file d'attente cette demande

    3 - le serveur des qu'il a operer sur une demande scan la file d'attente et effectu le traitement de l'étape 1 (ce scan peut être effectue par un Timer qui regarde si le drapeau est libre si oui, il traite la demande sinon il continu a attendre.

    j'espère que c'est clair.

  • signaler à un administrateur
    Commentaire de thierrydelepine le 19/03/2004 12:07:34

    Tres clair starfighter, je vais y réfléchir et tester, en tout cas je suis persuadé que tu t'approche de la vérité.

    Merci.

  • signaler à un administrateur
    Commentaire de etgenio le 24/03/2004 12:02:25

    Bien, très bien et surtout facile à modifier pour réalier d'autres applications Serveur-Clients !
    Merci

  • signaler à un administrateur
    Commentaire de thierrydelepine le 24/03/2004 13:51:22

    pour Starfighter, et les autres utilisateurs bien sur, j'ai mis en ligne un petit exemple d'une liste de type FIFO sans drapeau qui a resolu mon probleme cite precedemment.
    http://www.vbfrance.com/code.aspx?ID=21415

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Boutique

Boutique de goodies CodeS-SourceS