IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

Send vers clients linux fonctionne pas


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut Send vers clients linux fonctionne pas
    Je développe un serveur direct connect en delphi qui fonctionne assez bien sous windows par contre dès que j'essaie d'envoyer des informations a des clients direct connect sous linux, ils ne reçoivent rien ou semblent ne rien recevoir. si quelqu'un a une idée voici l'exemple de ma procedure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    procedure DCCMD_SendToUserMsg(Socket: tsocket; msg: ansiString);
    var
    tmpmsg:string;
    response,waitresult:integer;
    begin
    tmpmsg:=concat(msg+#124);
    response:=0;
    try
    entercriticalsection(criticalpart);
    if length(tmpmsg) >0 then response:=Send(socket, tmpmsg[1], Length(tmpmsg), 0);
    leavecriticalsection(criticalpart);
    except
    if response=SOCKET_ERROR then  leavecriticalsection(criticalpart);
    end;
    end;
    Si quelqu'un a une idée ça pourrait m'aider énormément merci

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 131
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 131
    Par défaut
    Salut !

    Pas d'idée pour le moment, juste une remarque :
    tmpmsg:=concat(msg+#124);
    Comme je ne connaissais pas "concat" (même si le nom est parlant), j'ai fait F1 dessus, il en ressort que (aide D7) :
    function Concat(s1 [, s2,..., sn]: string): string;
    (...)
    L'utilisation de l'opérateur plus (+) sur deux chaînes a le même effet que l'utilisation de la fonction Concat :
    S := 'ABC' + 'DEF';
    Conseil : L'opérateur + plus est plus rapide que Concat.
    Donc,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tmpmsg := concat(msg, #124);
    ou, mieux, Sinon, ça serait bien de nous dire exactement ce qui se passe (ou pas), car ça c'est un peu léger :
    ils ne reçoivent rien ou semblent ne rien recevoir
    Problème de message(s) vide(s) ou foirage de connexion Ouinouin-pingouin ?

    Mes 2 cts,
    --
    jp

  3. #3
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    déjà si ton socket est en TCP, un Send() ne garanti pas l'envoie de la totalité des données.

    il faut faire une boucle pour s'assurer que tout le paquet est parti...voir ma fonction SendStr
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    En tout cas la fonction de sendstr m'est bien utile merci Paul. Les quelques erreurs que j'avais parfois sur le send avec des résultats aléatoires en cas de surcharge du serveur ont disparus.
    Cette fonction d'envois de chaines de caractères aurait du figurer dans le livre de Delphi 7 studio c'est vraiment un "must".
    Comme le reste figurant sur votre site concernant l'envoi et la réception de chaines.

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par aroslide Voir le message
    En tout cas la fonction de sendstr m'est bien utile merci Paul. Les quelques erreurs que j'avais parfois sur le send avec des résultats aléatoires en cas de surcharge du serveur ont disparus.
    Cette fonction d'envois de chaines de caractères aurait du figurer dans le livre de Delphi 7 studio c'est vraiment un "must".
    Comme le reste figurant sur votre site concernant l'envoi et la réception de chaines.
    lol, comme quoi même après avoir écrit un bouquin sur Delphi on apprend encore, et il y a probablement des chapitres que j'aurais rédigé différemment aujourd'hui
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    j'ai donc fait différents test avec des #13#10 les clients programmés sous windows répondent normalement et ceux sous linux ne reçoivent toujours rien hélas ... Cela est il possible que les clients linux qui ont été programmés en C utilisent les chaines azt ? et que dans mon context de réception et d'envois de chaines de caractères je me retrouve dans l'obligation de tout modifier et transformer en AZT ? le client Linux êtant écrit en C sela aurait il une incidence sur mon serveur écrit en delphi ?


    pourtant Telnet reçoit bien ma clé de connection à savoir :

    $Lock inpo\WI2@kW&K^F@f[+Rq=y/gf/n-<(iLVvIAr>Fu.fdYen\J Pk=ARODCHub|

    le | symbolisant la fin de la ligne à traiter.

  7. #7
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    peu importe sur quel système et avec quel langage est développé l'application.

    la question est de savoir ce qu'il attend dans le tuyau

    et ça tu peux pas l'inventer, ça dépend du protocole.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut rendre son serveur agnostique
    Avec l'évolution et le grossissement du nombre d'internautes, j'ai peur qu'à courte échéance les appliquations serveurs développées risquent de devenir obsolétes très rapidement, je me suis procuré l'ouvrage "basic 32 bit communications programming" de alan c.moore et celui traite à un moment d'une méthode pour rendre son serveur capable d'utiliser aussi bien ipv6 qu' ipv4 en utilisant PF_UNSPEC par contre je vois pas comment initialiser mon serveur avec cette valeur et surtout comment l'utiliser en réception et envoi de donnée.

  9. #9
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    dans la mesure ou il existe des passerelles entre IPv4 et IPv6, les serveurs IPv4 risque de disparaitre aussi vite que...les applications DOS sur PC
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. [PrestaShop] Module "Relancer vos clients" ne fonctionne pas avec tâche CRON
    Par IED factory dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 20/05/2015, 13h48
  2. Lien vers image ne fonctionne pas sous IE
    Par vincesylver dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 07/10/2013, 16h12
  3. Lien vers mp3 ne fonctionne pas avec IE8
    Par musicg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/03/2011, 13h59
  4. Requete vers AD ne fonctionne pas
    Par Nitro76 dans le forum VBScript
    Réponses: 0
    Dernier message: 31/03/2010, 12h26
  5. FTP poste client ne fonctionne pas
    Par gifffftane dans le forum Windows XP
    Réponses: 0
    Dernier message: 30/05/2008, 09h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo