delphi wsaasyncselecy not working in windows services application

250 views Asked by At

I write service application with Winsock. I want have asynchronous sockets. In TThread in Execute I have example code:

procedure TNasluchujPolaczenia.Execute;
var
  WindowsSockets: WSAData;
begin
  WSAStartup(MAKEWORD(2, 0), WindowsSockets);
  mysocket:= Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  sizesettings := SizeOf(SettingsSocket)
  bind(mysocket, SettingsSocket, SizeOf(SettingsSocket));
  listen(mysocket, 10);
  while myend <> True do
  begin
    WSAAsyncSelect(mysocket, Handle, WM_USER, FD_READ or FD_ACCEPT);
    accept(mysocket, pointer(@SettingsSocket), @sizesettings);
  ...
  end;           
  Shutdown(mysocket, SD_BOTH);
  CloseSocket(mysocket);
  WSACleanUp();
  Terminate;
end;

this not working:

WSAAsyncSelect(mysocket, Handle, WM_USER, FD_READ or FD_ACCEPT);

and I don't know why. My service is blocked on this acccept(), when I have connection, my loop once execute and next blocked. I checked my code in plain application everything is ok.

0

There are 0 answers