Problème avec la bibliothèque "network"

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Problème avec la bibliothèque "network"

Message par celtic88 »

Bonjour les pures,, :D

j'ai constaté que le multithreading avec la bibliothèque "network server" génère beaucoup d'erreur " fuite de mémoire " a cause de la mémoire libérée directement quand un "#PB_NetworkEvent_Disconnect" se produite,pour moi c'ést un très gros problème alors j'ai décidé de ne plus utiliser cette bibliothèque. !

Avez-vous des suggestions ?.
Merci.
.....i Love Pb :)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Problème avec la bibliothèque "network"

Message par djes »

Oui, j'avais noté le même problème, et je (de mémoire) l'avais résolu en ne faisait pas CloseNetworkConnection(). As-tu essayé ?
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: Problème avec la bibliothèque "network"

Message par celtic88 »

@djes

mais,, ce n'est pas très pratique,en plus même avec "ReceiveNetworkData" ou "SendNetworkData" le programme plante quand le serveur ferme la connection et libère la mémoire :/
.....i Love Pb :)
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: Problème avec la bibliothèque "network"

Message par celtic88 »

mmm, je pense que "pb" utilise la fonction"WSAAsyncSelect" et "Event: FD_CLOSE"

https://msdn.microsoft.com/en-us/librar ... s.85).aspx
.....i Love Pb :)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Problème avec la bibliothèque "network"

Message par djes »

Oui, je pense qu'il faut respecter la procédure décrite dans cette page
Data arrives on socket s; Windows Sockets 2 posts WSAAsyncSelect message
Application processes some other message
While processing, application issues an ioctlsocket(s, FIONREAD...) and notices that there is data ready to be read
Application issues a recv(s,...) to read the data
Application loops to process next message, eventually reaching the WSAAsyncSelect message indicating that data is ready to read
Application issues recv(s,...), which fails with the error WSAEWOULDBLOCK.
et se méfier du close, car il est possible que ce soit PB qui le gère...
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: Problème avec la bibliothèque "network"

Message par celtic88 »

en fait il utilise "api select et WSAFDIsSet" "par OLLYDBG"
mais jusqu'à maintenant pas de solution..alors j'utilise les winapi
.....i Love Pb :)
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: Problème avec la bibliothèque "network"

Message par celtic88 »

une solution c'est de remplacer les deux function "ReceiveNetworkData" et "SendNetworkData" coté serveur pour utiliser le multi thread sans crash, par "ReceiveNetworkDataServer" et "SendNetworkDataServer"

Code : Tout sélectionner

Macro ReceiveNetworkDataServer(sock,Buffer,sizebuffer)
   recv_(sock, Buffer, sizebuffer,0) 
 EndMacro
 
Macro SendNetworkDataServer(sock,Buffer,sizebuffer)
   send_(sock, Buffer, sizebuffer,0) 
 EndMacro
cette méthode marche sur windows et linux et mac x ,car il utilisent les mêmes call !!

*ps: quand le client se connecte, il faut retirer l'identifiant système de connection "ConnectionID(Connexion)" pour utiliser c'est deux macro.

reste à valider.
.....i Love Pb :)
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Problème avec la bibliothèque "network"

Message par JohnJohnsonSHERMAN »

J'ai moi aussi eu des problémes avec cette lib pour mon serveur web, mais je n'ai pas constaté de fuites mémoires maintenant. Je vais checker avec valgrind tout à l'heure

Ah, il y a un autre "bug" : sous Linux (Ubuntu ou Debian) , la fonction SendNetworkData() n'envoie que les 28 premiers ko de données, de sorte que mon serveur web envoie correctement les pages HTML et CSS mais tronque toutes les images. Cela n'apparait que lors d'une connection à distance, en localhost, tout se passe bien. Je pense à un probléme de taille de buffer d'envoi du coté des fonctions de pls bas niveau/ de la carte réseau... Auquel cas PB n'envoie que le premier paquet, puis "oublie" qu'il reste des données a envoyer... Ce probléme est apparu sur tous les PC ayant une distribution Ubuntu ou Debian installée dessus, je n'ai pas testé sous d'autres distros comme Fedora ou CentOS.... à voir.
Si vous voulez tester, mon code est ici : http://www.purebasic.fr/french/viewtopi ... it=pureweb
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: Problème avec la bibliothèque "network"

Message par celtic88 »

@JohnJohnsonSHERMAN

test avec plus de 200 connection et tu verras.
je parle en mode multithreading bien sur
.....i Love Pb :)
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Problème avec la bibliothèque "network"

Message par JohnJohnsonSHERMAN »

@Celtic : je parlais d'un bug qui aparraissait sans raison dans le code de mon serveur, lorsqu'exécuté sur un Linux là ou sous Windows, avec le même code exactement, aucun probléme... Les gros fichiers sont tronqués à 28ko

Je vais faire le test de mémoire tout à l'heure ou demain, sous linux
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Répondre