TIdUDPClient Wo ist die Read ausgabe???



  • hallo

    ich sehe nicht wie ich bei TIdUDPClient an den empfangenen text komme. Es gibt nur ein event OnStatus?? Der server auf den ich verbinde schickt permanent daten an den cleint (half-life log) und ich möchte eben die ausgabe in einem memo darstellen aber wie?



  • ReceiveBuffer is an Integer function used to read data from the remote connection specified in VPeerIP and VPeerPort into the buffer ABuffer.

    ABufferSize indicates the number of bytes to read from the remote connection.

    AMSec indicates the number of milliseconds to delay while waiting for the socket Binding to become Readable. The default value for AMSec is IdTimeoutDefault, and indicates that ReceiveTimeOut will be used as the timeout value.

    If a timeout occurs while waiting for the Binding to become ready for the read operation, RecvBuffer will set the following values before exiting the method:



  • naja ich weiss aber nicht womit ich ABuffer deklarieren soll? typ void*??
    und wohin muss die methode? gleich nach dem Active? also:

    IdUDPClient1->Active = true;
    IdUDPClient1->ReceiveBuffer(...);

    😕



  • Einfach in der Hilfe nachschauen. Des Weiteren:

    AMSec indicates the number of milliseconds to delay while waiting for the socket Binding to become Readable.



  • kannst du mir nicht sagen wie es geht? in die hilfe habe ich bereits geschaut und den gleichen text dort gesehen den du mir hier geschrieben hast. das hilft mir aber nicht weiter.



  • Ich habe dazu keinen Code! Woher ??

    Ich kann auch nur in der Hilfe nachschauen -> also Verbindung herstellen und lesen. Warum testet du es nicht aus



  • weil ich nicht weiter komme! schau:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        IdUDPClient->Active = true;
    	IdUDPClient->Send("ÿÿÿÿinfo");
        Memo1->Lines->Add(IdUDPClient->ReceiveString());
    }
    

    hierbei hängt dann die anwendung. das kann doch nicht so schwer sein an einem UDP zu lauschen 😮



  • http://www.ibrtses.com/delphi/udp1.html

    Dann gehört dazu, dass man auch mal in die Hilfe schaut. Wo ist dort eine Receive-Funktion ohne Paramter?

    function ReceiveString(const AMSec: Integer): string; overload;
    function ReceiveString(var VPeerIP: string; var VPeerPort: integer; const AMSec: Integer): string; overload;
    

    Die beiden sind da zu finden. Im Zusammenhang mit dem text ist doch wohl klar, dass zumindestens die Wartezeit übergeben werden sollte.



  • Wenn du den C++ Builder benützt, kannst du doch auch die TNMUDP-Komponente (Reiter: FastNet) nehmen. Da hast du dann einfach ein Ereignis für den Empfang:

    void __fastcall TForm1::NMUDP1DataReceived(TComponent *Sender,
          int NumberBytes, AnsiString FromIP, int Port)
    {
    //...
    }
    


  • Kann er grundsätzlich machen, aber Fastnet gibt es dann im BCB 2006 wohl nicht mehr



  • ich kriege einfach keinen output das gibts ja nicht. 😡
    woher soll ich denn nun wissen was der fehler ist? normalerweise kriegt man ja eine exception 🙄



  • oh es geht. jetzt müsste ich aber wissen wie ich ein TStream in ein TMemo ausgeben kann? 😋



  • Wie immer -> schau in die Hilfe da gibt es eine Variante die nicht die Datei läd, sondern aus dem Stream liest


Anmelden zum Antworten