0

我用 Winsock 编写服务应用程序。我想要异步套接字。在 TThread in Execute 我有示例代码:

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;

这不起作用:

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

我不知道为什么。我的服务在此acccept()上被阻止,当我有连接时,我的循环执行一次,然后被阻止。我在普通应用程序中检查了我的代码,一切正常。

4

0 回答 0