Einzelnen Beitrag anzeigen

neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#1

Windows Socket sauber Schließen

  Alt 13. Feb 2004, 12:11
Ich habe einen kleinen Server geschrieben der Anfragen an eine Datenbank ausführt und das Ergebnis zurück sendet.

Nun weis ich aber Leider nicht wie ich die zuvor aufgebaute Verbindung sauber schließe.

Listener Thread zum Abhörchen nach Verbindungen:
Delphi-Quellcode:
procedure T .Execute;
var fClient : TSockAddr;
    iRet,
    iLen : Integer;
    fReadSet : TFDSet;
    fTime : TTimeVal;

    ...
    ZeroMemory(@fClient, SizeOf(fClient));
    iLen := SizeOf(fClient);
    fTime.tv_sec := 0;
    fTime.tv_usec := 1000 * 300; // warte 500 ms
    repeat
      FD_ZERO(fReadSet);
      FD_SET(iSocket, fReadSet);
      select(0, @fReadSet, nil, nil, @fTime);
      
      // Liegt was an??
      if FD_ISSET(iSocket, fReadSet) then
         begin
           iRet := accept(iSocket, @fClient, @iLen);
           if iRet > 0 then // Anfrage in Thread ausführen
              TMDERequest.Create(iRet, inet_ntoa(fClient.sin_addr));
         end;
    until Terminated;
    ...
Das Arbeitstier was so nicht funktioniert:

Delphi-Quellcode:
procedure TMDERequest.Execute;
...
   recv( ??? ); // Anfrage Empfangen
...
   send( ??? ); // Ergebnis Senden
...
    Sleep(2000);
    closesocket(iSocket); // Das funktioniert so nicht ?
...
Hilfe, ich bin zu doof dazu!
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat