コンポーネントには set option プロパティがありますか、それとも setsockopt 関数を使用する必要がありますか?
キープアライブに組み込まれている OS を自分で作成する代わりに有効にしたい... -.-"
それで、私の質問は、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;