该组件是否具有设置选项属性或者我需要使用 setsockopt 功能?
我想启用内置在 Keep-alive 中的操作系统,而不是我自己编写它...... -.-”
所以,我的问题是,在我创建 TServerSocket 实例的构造函数中,我该如何启用这个 SO_KEEPALIVE 选项?
谢谢大家。
您可以使用 setsockopt 设置 SO_KEEPALIVE
implementation
uses
WinSock;
{$R *.dfm}
procedure TForm2.ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
var
OptVal: DWORD;
begin
OptVal := 1;
if setsockopt(Socket.SocketHandle, SOL_SOCKET, SO_KEEPALIVE, PAnsiChar(@OptVal), SizeOf(OptVal)) = SOCKET_ERROR then
raise Exception.Create(Format('WinSock Error %d', [WSAGetLastError()]));
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
s := TServersocket.Create(Self);
s.Port := 8090;
s.OnClientConnect := ClientConnect;
s.Open;
end;