Bonjour à tous,
J'ai un petit problème concernant une liaison client/serveur. Je programme avec delphi depuis 2 mois seulement et ne connait pas trop de choses sur ses composant.
Voici mon problème :
J'ai développé une liaison client serveur (via les composant TserveurSocket et TClientSocket) entre un module que j'ai intégré dans un logiciel SIG (MapInfo), qui est donc le client, et un serveur que j'ai développé moi même.
Le Client se connecte au serveur puis récupère des données sur les objets de la carte du SIG. Il insère ces données dans du code XML (via composant TXMLDocument).
Une fois toutes les informations récupérées, il envoie le tout au serveur qui l'interprètera (envoi via sendText(XMLDoc.XML.text)).
Oui mais voilà, si les informations ne sont pas trop nombreuses aucun problème, mais sinon le client me retourne une erreur d'écriture sur la socket, et donc le serveur ne reçoit rien du tout. Résultat MapInfo plante.
Il faut savoir que la quantité d'information est vraiment volumineuse :environ 1h30 pour la récolte et conversion XML des infos, pour une taille de plus de 80 mo (en faisant XMLDoc.SaveToFile le fichier que j'obtiens pèse 81,4 mo).
Ma version précédente fonctionnait mais, je l'ai modifié en ajoutant un élément de plus à récupérer par objet sur la carte, et maintenant j'obtiens cette erreur sur la socket (le document xml est plus lourd qu'avant, on passe de 70 Mo à 81,4 mo il me semble).
J'utilise un fichier log dans lequel j'insère les différentes actions effectuée, je suis donc sur que l'erreur se situe au niveau de l'envoi des données au serveur.
Je me demande donc d'où vient l'erreur et aimerait avoir vos avis si possible.
Etant donné que dans des cas où il y a moins d'infos l'appli fonctionne, je me demande s'il n'y a pas une limite à la taille de la chaine de caractère que j'envoi via sendSocket...Mais j'aimerais en être sur, et vu mon inexpérience en Delphi je passe peut être à côté de quelquechose de facile, d'où ma demande.
N'hésitez pas à me poser des questions supplémentaires et merci pour l'attention que vous porterez à mon problème.
Partager