Autor Beitrag
sky21
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 141

W7
D2010, XE2
BeitragVerfasst: Mi 19.04.06 11:45 
Ich werde aus der Dokumentation zu 'ReceiveBuffer' nicht schlau:

Nachdem ich ein PING-Request gesendet habe, möchte ich eine Zeit 'T=Timeout' lang auf das PING-REPLY warten.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
//pseudo code
 time := MY_TIMEOUT; // e.g. 5s
while (time> 0do
 byteCount := ReceiveBuffer(myBuffer, Size, ReadTimeout);  // function from 'TIdRawBase'

 if(byteCount>0then
  doSomething(myBuffer);

  // calc new timeout
  time := time - ReadTimeout;
end;




time: die jeweils dekrementierbare Zeit; In 'While' soll max. die jeweils abnehmende timeoutzeit verweilt werden.
ReadTimeout: Das ist die Zeit, welche die ReceiveBuffer Funktion verwendet.


Jetzt: Wie verhält sich 'ReadBuffer'??

+ Wartet diese Funktion solange, wie ich als 3. Argument mitgegeben habe? ...Oder retourniert diese, sobald irgendwelche Bytes empfangen wurde?

Wenn ja, könnte ich ja einfach dass da machen, nicht?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
 if (ReceiveBuffer(myBuffer, Size, MY_TIMEOUT) > 0then
  doParseData(myBuffer)
 else
  // TIMEOUT KICKED IN!!!

In c++ gibts da eine Funktion, welche die Anzahl anliegenden Bytes ausliest, BEVOR dann die effektive Receive() Methode aufgerufen wird und damit der Inhalt gelesen wird. Hier scheint es nun ein bissl anders zu sein.

Thanks for the Help!