OVH Cloud OVH Cloud

Utilisation socket

3 réponses
Avatar
steganux
Bonjour,

j'essaye depuis plusieurs jours d'utiliser les socket avec windev 9.
J'ai pris les exemples fournis pour obtenir ce code :
_____________________________________________
CONSTANTE
csNomSocketEcoute =3D "SOCKET_ECOUTE"
cnPortEcoute =3D 5010
csNomThreadEcoute =3D "THREAD_ECOUTE"
FIN
_____________________________________________
Initialisation de ma fen=EAtre principale

SocketCr=E9e(csNomSocketEcoute,cnPortEcoute)
SI ErreurD=E9tect=E9e ALORS
Erreur("Impossible de mettre en place la socket d'=E9coute sur le port
:" +cnPortEcoute,ErreurInfo())
FinProgramme()
FIN
ThreadEx=E9cute(csNomThreadEcoute,threadNormal,EcouteConnexions)
_____________________________________________
PROCEDURE EcouteConnexions()
sNomCanal est une cha=EEne
sNomThread est une cha=EEne
BOUCLE
Multit=E2che(-1)
SI SocketAttendConnexion(csNomSocketEcoute) ALORS
sNomCanal =3D SocketAccepte(csNomSocketEcoute)
SI sNomCanal~=3D"" ALORS
Erreur("Impossible de cr=E9er la socket n=E9cessaire =E0 la nouvelle
connexion",ErreurInfo())
SORTIR
SINON
sNomThread =3D sNomCanal
ThreadEx=E9cute(sNomThread,threadNormal,"GestionConnexion",sNomCanal)
FIN
FIN

FIN
_____________________________________________
PROCEDURE GestionConnexion(sNomConnexion)
sMessage est une cha=EEne
sNomThread est une cha=EEne =3D sNomConnexion
BOUCLE
sMessage =3D SocketLit(sNomConnexion,Faux,10)
SELON sMessage
CAS "BYE" :
SORTIR
CAS "" :
Multit=E2che(-1)
CAS "RING" :
Son("ring2.wav",sonBoucle+1)
Multit=E2che(-1)
CAS "STOPRING" :
Son("")
Multit=E2che(-1)
AUTRES CAS :
Multit=E2che(-1)
FIN
FIN
SocketFerme(sNomConnexion)
_____________________________________________

Lorsque je test cette application en utilisant l'exemple "WD
Utilisation des sockets" fournis avec windev, j'ai aucun souci, le son
est bien jou=E9 quand j'envoi "RING" par contre mon souci arrive quand
je veux passer par telnet, je me connecte en tapant la ligne de
commande suivante dans une fenetre DOS :
telnet localhost 5010
La connexion se fait bien, par contre je ne peux pas envoyer de message
! Lorsque je tape RING sous dos, je n'ai pas d'=E9venements dans mon
appli serveur.
J'ai fait un trace des messages re=E7us et je n'ai que des messages
vides !
J'ai =E9galement test=E9 avec un petit logiciel client d=E9velopp=E9 en
RUBY mais j'ai le m=EAme r=E9sultat
Quelqu'un aurait-il une id=E9e pour que je puisse envoyer ma chaine
"RING" a mon appli par une ligne de commande telnet ou autre ?

Merci


Cordialement

Fabien, Steganux

3 réponses

Avatar
patrice
"steganux" a écrit dans le message de
news:
telnet localhost 5010
La connexion se fait bien, par contre je ne peux pas envoyer de message
! Lorsque je tape RING sous dos, je n'ai pas d'évenements dans mon



lire la doc, par défaut la connexion a besoin de retour chariot
Avatar
sg
windev fait sa propre moulinette dans les communications entre projet wd
dès que l'on communique avec des outils externes il faut ajouter
SocketChangeModeTransmission(csNomSocketEcoute , SocketSansMarqueurFin)
après avoir ouvert la connection

bon dev

JJF
WebJaseur.com

"steganux" a écrit dans le message de news:

Bonjour,

j'essaye depuis plusieurs jours d'utiliser les socket avec windev 9.
J'ai pris les exemples fournis pour obtenir ce code :
_____________________________________________
CONSTANTE
csNomSocketEcoute = "SOCKET_ECOUTE"
cnPortEcoute = 5010
csNomThreadEcoute = "THREAD_ECOUTE"
FIN
_____________________________________________
Initialisation de ma fenêtre principale

SocketCrée(csNomSocketEcoute,cnPortEcoute)
SI ErreurDétectée ALORS
Erreur("Impossible de mettre en place la socket d'écoute sur le port
:" +cnPortEcoute,ErreurInfo())
FinProgramme()
FIN
ThreadExécute(csNomThreadEcoute,threadNormal,EcouteConnexions)
_____________________________________________
PROCEDURE EcouteConnexions()
sNomCanal est une chaîne
sNomThread est une chaîne
BOUCLE
Multitâche(-1)
SI SocketAttendConnexion(csNomSocketEcoute) ALORS
sNomCanal = SocketAccepte(csNomSocketEcoute)
SI sNomCanal~="" ALORS
Erreur("Impossible de créer la socket nécessaire à la nouvelle
connexion",ErreurInfo())
SORTIR
SINON
sNomThread = sNomCanal
ThreadExécute(sNomThread,threadNormal,"GestionConnexion",sNomCanal)
FIN
FIN

FIN
_____________________________________________
PROCEDURE GestionConnexion(sNomConnexion)
sMessage est une chaîne
sNomThread est une chaîne = sNomConnexion
BOUCLE
sMessage = SocketLit(sNomConnexion,Faux,10)
SELON sMessage
CAS "BYE" :
SORTIR
CAS "" :
Multitâche(-1)
CAS "RING" :
Son("ring2.wav",sonBoucle+1)
Multitâche(-1)
CAS "STOPRING" :
Son("")
Multitâche(-1)
AUTRES CAS :
Multitâche(-1)
FIN
FIN
SocketFerme(sNomConnexion)
_____________________________________________

Lorsque je test cette application en utilisant l'exemple "WD
Utilisation des sockets" fournis avec windev, j'ai aucun souci, le son
est bien joué quand j'envoi "RING" par contre mon souci arrive quand
je veux passer par telnet, je me connecte en tapant la ligne de
commande suivante dans une fenetre DOS :
telnet localhost 5010
La connexion se fait bien, par contre je ne peux pas envoyer de message
! Lorsque je tape RING sous dos, je n'ai pas d'évenements dans mon
appli serveur.
J'ai fait un trace des messages reçus et je n'ai que des messages
vides !
J'ai également testé avec un petit logiciel client développé en
RUBY mais j'ai le même résultat
Quelqu'un aurait-il une idée pour que je puisse envoyer ma chaine
"RING" a mon appli par une ligne de commande telnet ou autre ?

Merci


Cordialement

Fabien, Steganux
Avatar
steganux
sg a écrit :

windev fait sa propre moulinette dans les communications entre projet wd
dès que l'on communique avec des outils externes il faut ajouter
SocketChangeModeTransmission(csNomSocketEcoute , SocketSansMarqueurFin)
après avoir ouvert la connection

bon dev

JJF
WebJaseur.com





effectivement cela venait du mode de transmission !

Merci pour votre aide