Page 1 sur 1

[..] Probleme fonction tcprecv()

Posté : mar. 08 févr. 2011 18:36
par lmkg
salut :)
je voudrais créer un script client avec le code:

Code : Tout sélectionner

$Msg=""
TCPStartup()
While $Msg<>"exit"
    $conn=TCPConnect("127.0.0.1",4444)
    TCPSend($conn,"Msg> ")
    $Msg=TCPRecv($conn,1000)
    MsgBox(0,"",$Msg)
WEnd
TCPShutdown()
 
comme vous le voyez ce script va afficher les messages du serveur dans une msgbox mais le probleme que je rencontre c'est avec la fonction tcprecv() qu'elle n'attend pas le message du serveur et affiche une msgbox vide en boucle. y'a t'il un moyen pour contrer cela?
ps: j'utilise netcat comme serveur avec la command: nc -l -p4444
cet fois ci j'ai fais plein de recherches avant de poster. d'ailleurs depuis hier :|
en éspérant que vous m'aiderez :)

merci

Re: [..] Probleme fonction tcprecv()

Posté : mar. 08 févr. 2011 19:35
par TommyDDR
Ah, vous aviez créé un TOPIC...
Attendez au moins 1j avant de MP la prochaine fois.

Je copie colle le MP que je vous ai envoyé :
TommyDDR a écrit :Tout d'abord, il ne faut pas mettre votre TCPConnect dans le while, en effet, vous devez vous connecter une seule fois !
Si vous voulez quand même "forcer" la connexion (au cas où le serveur ne soit lancé qu'après votre programme) faites une boucle JUSTE pour la connexion et après vous mettez votre boucle de TCPRecv.

Si vous ne voulez pas de MsgBox vides, testez ce qu'il y a dans $Msg avant de l'affiché, vous n'affichez que si ca n'est pas vide.

Code : Tout sélectionner

$Msg=""
TCPStartup()
Do
    $conn=TCPConnect("127.0.0.1",4444)
Until($conn > 0)

While $Msg<>"exit"
    TCPSend($conn,"Msg> ")
    Do
        $Msg=TCPRecv($conn,1000)
        If($Msg <> "") then
            MsgBox(0,"",$Msg)
        EndIf
        Sleep(10)
    Until($Msg <> "")
WEnd
TCPShutdown()
Edit : Mise à jour du code (j'avais mal lu votre demande)

PS (à propos de votre MP qui disait que le programme envoyai en boucle "Msg >") : Je pense qu'en cherchant à peu pres 12secondes vous auriez pu trouver..)

Re: [..] Probleme fonction tcprecv()

Posté : mar. 08 févr. 2011 22:17
par lmkg
avec ton code il'y a plein de Msg> envoyer au serveur c'est a dire que le script tourne en boucle et envoi le message "Msg>" au serveur et n'attend pas le message du serveur avec la fonction:

Code : Tout sélectionner

$Msg=TCPRecv($conn,1000)
comment corriger cela?

merci

Re: [..] Probleme fonction tcprecv()

Posté : jeu. 10 févr. 2011 20:46
par lmkg
up

Re: [..] Probleme fonction tcprecv()

Posté : ven. 11 févr. 2011 13:44
par lmkg
up

Re: [..] Probleme fonction tcprecv()

Posté : ven. 11 févr. 2011 14:15
par zeshrek
Premier up jeudi soir a 20:46, second jeudi a 13:44
Il est pourtant formellement interdit dans le reglement du forum d'espacer les UP de moins de 24h.
De plus tu avais été invité par TommyDDR a te montrer un, peu plus patient.

Pour mémoire, les gens répondent bénévolement en fonction de leurs compétences et disponibilité. Ce n'est pas en réclamant (j'ai failli mettre "en faisant le coucou") que les choses se passeront mieux... au contraire.

A bon entendeur...

Re: [..] Probleme fonction tcprecv()

Posté : ven. 11 févr. 2011 14:46
par TommyDDR
1UP !

Le forum mario n'est pas ici !

J'ai répondu à votre question (avant que mon message ne disparaisse) mais pour répondre à votre demande, il faut réellement chercher pas plus de 30secondes...

Étant donné que ce n'est pas votre 1ere demande dénuée de recherche, je vous laisse chercher.

Re: [..] Probleme fonction tcprecv()

Posté : ven. 11 févr. 2011 22:44
par lmkg
Ahhh là c'est trop... tu veux que je cherche pendant tois ans pour trouver la réponse toi :roll:
pourtant c'est ce que je fait tout le temps avant de venir mettre des ups :roll:

Re: [..] Probleme fonction tcprecv()

Posté : sam. 12 févr. 2011 12:37
par TommyDDR
Ce qui me fait le plus rire c'est que vous prenez un temps fou à répondre alors que dans le dernier post ou j'ai mi du code... je vous ai mis la solution... -> http://autoitscript.fr/forum/viewtopic. ... 062#p44062

Re: [..] Probleme fonction tcprecv()

Posté : sam. 12 févr. 2011 12:46
par lmkg
TommyDDR a écrit :Ce qui me fait le plus rire c'est que vous prenez un temps fou à répondre alors que dans le dernier post ou j'ai mi du code... je vous ai mis la solution... -> http://autoitscript.fr/forum/viewtopic. ... 062#p44062
tu crois que c'est ça le probléme?
eh bah non le petit probléme que je rencintre c'est que quand j'envoie "exit" au serveur je ne me déconnecte pas et au contraire y a une msgbox avec comme message "exit" alors la ligne:

Code : Tout sélectionner

While $Msg<>"exit"
a quoi elle sert?

merci

Re: [..] Probleme fonction tcprecv()

Posté : sam. 12 févr. 2011 12:51
par TommyDDR
Votre dernière demande :
lmkg a écrit :avec ton code il'y a plein de Msg> envoyer au serveur c'est a dire que le script tourne en boucle et envoi le message "Msg>" au serveur et n'attend pas le message du serveur avec la fonction:
Code
$Msg=TCPRecv($conn,1000)

comment corriger cela?

merci
Je ne vois rien du tout parlant du "exit"

Et je vous ai déjà dit de mettre un ClipPut($Msg) juste avant le MsgBox qui vous affiche le "exit" puis de le coller dans le bloc note pour voir ce que $Msg contient réelement.

Pour info, avec ce code : $Msg NE PEUT PAS CONTENIR "exit" !

PS : Les infos écrites en rouges sont importantes ;)

Re: [..] Probleme fonction tcprecv()

Posté : sam. 12 févr. 2011 12:56
par lmkg
TommyDDR a écrit :Et je vous ai déjà dit de mettre un ClipPut($Msg) juste avant le MsgBox qui vous affiche le "exit" puis de le coller dans le bloc note pour voir ce que $Msg contient réelement.
mais! $Msg contient "exit" sans saut a la ligne! (tester avec clipput)
j'ai même créer un sujet dans "demande de création de script" et il est supprimer. qu'est ce que ca vaut dire a ton avis? :x

Re: [..] Probleme fonction tcprecv()

Posté : sam. 12 févr. 2011 13:39
par TommyDDR
Ça veut simplement dire que comme beaucoup de message, il a été perdu pendant la migration. Certains de mes message aussi ont été supprimer (vous n'êtes pas le seul).

Vu la tournure que prend ce post, je vais arrêter d'y répondre, (Allez lire vos message perso du forum).