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

Web & réseau Delphi Discussion :

[SocketAPI] Problème de reception


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 168
    Par défaut [SocketAPI] Problème de reception
    Bonjours,
    -------------------------------
    Je suis en train de développer un projet Client/Server et du fait que j'en avais mare des composants Scktcomp (TClient et TServerSocket) ainsi que Indy j'ai voulu me mettre au SocketAPI ( notamment pour géré le multi Transfer ) mais j'ai un petit problème et je pense que c'est dut a Delphi2010 et l'Unicode, je réceptionne mal les caractères envoyer.

    voici ma fonction d'envoi :

    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
    16
    17
    18
    19
     
    {SendText to client------------------------------------------------------------}
    procedure SendString(str:string);
    var
      sendbuf :array[0..buflen -1] of Char;
      sendLen :Integer;
      i :Integer;
    begin
      if str <> '' then
      begin
        for i := 0 to Length(str) -1 do sendbuf[i] := (str)[i+1];
        sendLen := send(s,sendbuf,buflen,0);
        if sendLen < 0 then
        begin
          WSACleanup;
          Exit;
        end;
      end;
    End;
    et ma fonction qui doit recevoir le texte :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    procedure SocketWorkThread(wSock :TSocket);stdcall;
    var
       recvbuf :array[0..buflen -1] of Char;
       Receive,i :Integer;
       cString :AnsiString;
       hSock : integer; //Socket Handle
    begin
      try
        while true do begin
         hSock := wSock;
         Receive := recv(wSock,recvbuf,buflen,0);
         if Receive < 1 then begin
           {Socket disconnected----------------------------------------------------}
           Showmessage('disconnected');
           CloseSocket(wSock);
           ExitThread(0);
           {-----------------------------------------------------------------------}
         end;
         cString := PChar(@recvbuf);
         {Socket OnRead------------------------------------------------------------}
         Showmessage(cString);
     
         {-------------------------------------------------------------------------}
        end;
      except
      {Log there}
      Exit;
      end;
    end;
    Comment sa se fait que je reçois uniquement des caractères blanc ?

    Info sup : buflen est une constante = 100.

    Merci de votre aide !

  2. #2
    Membre Expert

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 296
    Par défaut
    Tu as essayé avec des AnsiChar? (je ne suis pas sûr du nom)

    Quels sont les codes ASCII (ou Unicode) que tu reçois?

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 168
    Par défaut
    Oui j'ai essayer avec les AnsiString comme je faisais sous TClientSocket et TServerSocket mais avec la SocketAPI je reçois pas des caractères chinois mais des espaces blank quand par exemple je fait un Showmessage(cString); et je pense qu'il s'agit des 100 cases du buflen c'est étrange.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème envoi/reception serveur client
    Par Sadz74 dans le forum C#
    Réponses: 3
    Dernier message: 15/02/2008, 19h13
  2. Tcomport problème de reception
    Par lefebvre.pie dans le forum C++Builder
    Réponses: 5
    Dernier message: 04/01/2008, 14h59
  3. Problème de reception de mails
    Par spynux dans le forum Exchange Server
    Réponses: 1
    Dernier message: 30/08/2007, 16h10
  4. Problème de reception de trame liaison série
    Par SylvainClip dans le forum Delphi
    Réponses: 1
    Dernier message: 15/05/2007, 11h37
  5. Problème de reception sur Port COM
    Par Revan777 dans le forum C
    Réponses: 9
    Dernier message: 19/04/2005, 21h55

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