winddriver/Delphi-Cross-Socket

有个奇怪的问题请教

wr960204 opened this issue · 3 comments

我的开发环境是Windows10 X64,Delphi 11.0 Version 28.0.42600.6491
同样的代码,放在.dpr文件的入口就没问题,放在函数里就会出错:“
TIocpCrossSocket._NewAccept.AcceptEx : System Error. Code: 10038(2736), 在一个非套接字上尝试了一个操作。
TIocpCrossSocket._NewAccept.AcceptEx : System Error. Code: 10038(2736), 在一个非套接字上尝试了一个操作。
TIocpCrossSocket._NewAccept.AcceptEx : System Error. Code: 10038(2736), 在一个非套接

代码如下:
program ss;

{$APPTYPE CONSOLE}

{$R *.res}

uses
Net.CrossSslSocket,
Net.CrossSslDemoCert,
System.SysUtils, System.Classes, System.Generics.Collections,
Net.CrossSocket.Base,
Net.CrossSocket,
Net.CrossHttpServer,
Net.CrossHttpMiddleware,
Net.CrossHttpUtils;

type
TObj = class
procedure test(const ARequest: ICrossHttpRequest;
const AResponse: ICrossHttpResponse; var AHandled: Boolean);
end;

{ TObj }

procedure TObj.test(const ARequest: ICrossHttpRequest;
const AResponse: ICrossHttpResponse; var AHandled: Boolean);
begin
AResponse.Send('ABCDEF');
end;

//同样的代码,在函数里面调用就会出错
procedure startService();
var
Obj: TObj;
FHttpServer: ICrossHttpServer;

begin
Obj := TObj.Create;
FHttpServer := TCrossHttpServer.Create(0, False);
FHttpServer.Addr := IPv4v6_ALL; // IPv4v6
FHttpServer.Port := 8088;
FHttpServer.Compressible := True;

FHttpServer.All('/', Obj.test);

FHttpServer.Start();;

end;

var
Obj: TObj;
FHttpServer: ICrossHttpServer;

begin
// 同样的代码,直接调用没问题
// Obj := TObj.Create;
// FHttpServer := TCrossHttpServer.Create(0, False);
// FHttpServer.Addr := IPv4v6_ALL; // IPv4v6
// FHttpServer.Port := 8088;
// FHttpServer.Compressible := True;
//
// FHttpServer.All('/', Obj.test);
//
// FHttpServer.Start();

startService();

while(true) do
begin
Readln;
end;
end.

我猪了。擦

呵呵,武大偶尔也会有迷糊的时候