-
Notifications
You must be signed in to change notification settings - Fork 149
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
有个奇怪的问题请教 #104
Comments
函数内部定义的接口作用域就在那个函数代码内,函数执行完就被释放了,这是最基本的Delphi知识呀
发自我的iPhone
在 2022年2月16日,15:38,wr960204 ***@***.***> 写道:
我的开发环境是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.
—
Reply to this email directly, view it on GitHub<#104>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AAYSQXNZ7DDZJM6NDUDFDYLU3NH6TANCNFSM5OQZAJAA>.
Triage notifications on the go with GitHub Mobile for iOS<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675> or Android<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
我猪了。擦 |
呵呵,武大偶尔也会有迷糊的时候 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
我的开发环境是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.
The text was updated successfully, but these errors were encountered: