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.