PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → socket UDP - lenteur avec SocketEcrit
socket UDP - lenteur avec SocketEcrit
Started by JM Deglorie, Apr., 16 2005 3:00 AM - 5 replies
Posted on April, 16 2005 - 3:00 AM
Bonsoir,

J'utilise une appli Windev pour dialoguer en UDP avec un composant serveur écrit dans un autre langage.
Mon code client se résume à cela :
--------------------------------------
SI PAS SocketCréeUDP(Ma_Socket,Port_Ma_Socket,NetAdresseIP()) ALORS
Erreur("Erreur... " + ErreurInfo(errMessage))
SINON
// Traitement
...
SI SocketEcrit(Ma_Socket,Ma_Chaine,IP_Serveur,Port_Serveur) ALORS
Resultat = SocketLit(Ma_Socket,Faux,500)
....
FIN
...
FIN
...
SocketFerme(ma_socket)
--------------------------------------
Mon pb :
La fonction SocketEcrit est très lente (plus de 2 sec pour envoyer quelques caractères) alors que la fonction SocketLit est quasi instantanée.
Je me suis assuré du bon fonctionnement de la partie serveur en écrivant dans un autre langage la même routine. Donc RAS du coté serveur.
Le pb de lenteur provient bien de mon appli windev et de cette fonction SocketEcrit.
Est-ce que quelqu'un peut m'aider à comprendre le phénomène et à trouver une solution à ce pb de lenteur ?
Merci pas avance
JMD
Posted on May, 02 2005 - 12:46 PM
JM Deglorie a formulé la demande :
Bonsoir,

J'utilise une appli Windev pour dialoguer en UDP avec un composant serveur
écrit dans un autre langage. Mon code client se résume à cela :
--------------------------------------
SI PAS SocketCréeUDP(Ma_Socket,Port_Ma_Socket,NetAdresseIP()) ALORS
Erreur("Erreur... " + ErreurInfo(errMessage))
SINON
// Traitement
...
SI SocketEcrit(Ma_Socket,Ma_Chaine,IP_Serveur,Port_Serveur) ALORS
Resultat = SocketLit(Ma_Socket,Faux,500)
....
FIN
...
FIN
..
SocketFerme(ma_socket)
--------------------------------------
Mon pb :
La fonction SocketEcrit est très lente (plus de 2 sec pour envoyer quelques
caractères) alors que la fonction SocketLit est quasi instantanée. Je me suis
assuré du bon fonctionnement de la partie serveur en écrivant dans un autre
langage la même routine. Donc RAS du coté serveur. Le pb de lenteur provient
bien de mon appli windev et de cette fonction SocketEcrit. Est-ce que
quelqu'un peut m'aider à comprendre le phénomène et à trouver une solution à
ce pb de lenteur ? Merci pas avance JMD


J'ai le même problème.
Quelqu'un a-t-il la solution ?

--
Eric Laurent
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)
Posted on May, 02 2005 - 2:03 PM
le serveur demande peut être un caractère de fin de chaine spécifique avant
de pouvoir déterminer la fin du socketecrit et la libération pour la
commande suivant.
voir aussi du coté de SocketChangeModeTransmission() (normalement n'influe
que sur socketlit mais à tester quand me^me)

"Eric Laurent" <nospam.laurent.systel@wanadoo.fr> a écrit dans le message de
news:mn.12867d55b12daf89.17482@wanadoo.fr...

JM Deglorie a formulé la demande :
Bonsoir,

J'utilise une appli Windev pour dialoguer en UDP avec un composant

serveur
écrit dans un autre langage. Mon code client se résume à cela :
--------------------------------------
SI PAS SocketCréeUDP(Ma_Socket,Port_Ma_Socket,NetAdresseIP()) ALORS
Erreur("Erreur... " + ErreurInfo(errMessage))
SINON
// Traitement
...
SI SocketEcrit(Ma_Socket,Ma_Chaine,IP_Serveur,Port_Serveur) ALORS
Resultat = SocketLit(Ma_Socket,Faux,500)
....
FIN
...
FIN
..
SocketFerme(ma_socket)
--------------------------------------
Mon pb :
La fonction SocketEcrit est très lente (plus de 2 sec pour envoyer

quelques
> > caractères) alors que la fonction SocketLit est quasi instantanée. Je me
suis
assuré du bon fonctionnement de la partie serveur en écrivant dans un

autre
> > langage la même routine. Donc RAS du coté serveur. Le pb de lenteur
provient
bien de mon appli windev et de cette fonction SocketEcrit. Est-ce que
quelqu'un peut m'aider à comprendre le phénomène et à trouver une

solution à
ce pb de lenteur ? Merci pas avance JMD

J'ai le même problème.
Quelqu'un a-t-il la solution ?

--
Eric Laurent
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)
Posted on May, 02 2005 - 2:17 PM
David B a présenté l'énoncé suivant :
le serveur demande peut être un caractère de fin de chaine spécifique avant
de pouvoir déterminer la fin du socketecrit et la libération pour la
commande suivant.
voir aussi du coté de SocketChangeModeTransmission() (normalement n'influe
que sur socketlit mais à tester quand me^me)

Merci pour ta réponse.
Malheureusement, SocketChangeModeTransmission() ne peut pas être
appliqué.
Extrait de l'aide:
Remarque : Sockets UDP : Les sockets de type UDP sont toujours de type
"Socket sans marqueur". La fonction SocketChangeModeTransmission ne
doit pas être utilisée avec des sockets de type UDP.

Une autre idée ?

--
Eric Laurent
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)
Posted on December, 30 2005 - 9:59 PM
J'ai constaté le même dysfonctionnement, il y a 4,5 secondes d'utilisées par la fonction SocketEcrit pour interroger un DNS (qui n'a bien sûr la pa réponse à la question) puis, enfin, le ScocketEcrit s'apperçoit qu'il a à faire à une adresse IP, et exécute la commande.

Ce phénomène disparaît en ajoutant des résolutions dans c:\windows\system32\drivers\etc\hosts

ce qui n'est bien sûr pas une solution.

Parfois, si l'adresse IP est passé en tant que chaîne avec des guillemets, ça peut passer.

Bonne chance

Idem pour les fonctions "httprequête"
Posted on January, 12 2006 - 6:21 PM
oui j'ai le même problème car j'ai une liaison avec un automate Omron.
Pour palier à cela, dans les config de la connexion réseau , je desactive Netbios (parametre IP/TCP) defaut ---> desactiver.
On passe de 4,5s à 0,002s beaucoups mieux
L'inconveniant ne pas eteindre le PC ou se deconnecter du reseau car perte du reseau
Si quelqu'un a une autre solution ???