Salut à tous,

Je dois faire un "réseau" pour dans 9h55, et j'espère qu'il y a un developpeur sympa qui traine encore ici avant qu'il ne soit trop tard.

Bref, je tente d'envoyer une variable d'un type très simple, le type TMyType :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
  TMyType = record
    MyText : string;
  end;
Le problème c'est qu'alors que j'arrive à envoyer des strings très facilement, envoyer ma variable de type TMyType pose problème.

Ma procédure de reception (directement tirée des exemples fournis avec ICS) est la suivante :

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
 
  procedure TConUdpRcv.WSocketDataAvaible(Sender : TObject; ErrCode : Word);
  var
    buffer : TMyType; //<= ici ma variable de type TMyType
    Len    : integer;
    Src    : TSockAddrIn;
    SrcLen : Integer;
  begin
    SrcLen:= SizeOf(Src);
    Len:= WSocket.ReceiveFrom(@buffer, SizeOf(buffer), Src, SrcLen);
    Writeln('On recoit quelquechose de ', FSenderAddr.s_addr);
    if Len>= 0 then
    begin
      if (FSenderAddr.S_addr = INADDR_ANY) or (FSenderAddr.S_addr = Src.sin_addr.S_addr) then
      begin
        //Buffer[Len]:= #0;
        FCount:= FCount+1;
        writeln(IntToStr(FCount),
                ' '+StrPas(inet_ntoa(Src.sin_addr)),
                ':'+intToStr(ntohs(Src.sin_port)),
                ' > '+StrPas(PChar(buffer.MyText))); // c'est sensé afficher le texte 
      end;
    end;
  end;

Ma procédure d'envoi est aussi inspirée des fichiers fournis avec ICS :

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 TConCli.Run;
  var
    test : TMyType;
  begin
    Done:= false;
    WSocket:= TWSocket.Create(nil);
 
    test.MyText:= 'kikou lol'; // j'initialise pour avoir quelquechose à récupérer de l'autre côté !
 
    WSocket.Proto:= 'udp';
    WSocket.Addr:= 'localhost';
    WSocket.Port:= '600';
 
    WSocket.OnSessionConnected:= WSocketSessionConnected;
    WSocket.OnSessionClosed:= WSocketSessionClosed;
    WSocket.OnDataAvailable:= WSocketDataAvailable;
    WSocket.Connect;
 
    while not Done do
    begin
      writeln('Appuie sur entrée pour envoyer un truc sexy =) : ',test.Mytext, '');
      readln;
        WSocket.Send(@test, SizeOf(test));
    end;
 
    WSocket.Destroy;
    Writeln('appuyez sur entrée pour quitter');
    readln;
  end;
Voilà, quand je met une variable de type string, ça marche tout seul, mais dès que je tente d'envoyer mon test, ça compile, du côté du serveur on voit qu'on a reçu quelquechose, mais quand je demande de l'afficher, ça ne m'affiche rien.

En mettant un breakpoint après le receive, et en testant la valeur des variables, ça me dit que buffer.MyText = '', alors qu'il devrait valoir 'kikoulol'.

Voilà, j'espère que quelqun saura trouver où se situe mon problème.

Cordialement,

iLUV