0

コンポーネントには set option プロパティがありますか、それとも setsockopt 関数を使用する必要がありますか?

キープアライブに組み込まれている OS を自分で作成する代わりに有効にしたい... -.-"

それで、私の質問は、TServerSocket のインスタンスを作成するコンストラクター内で、この SO_KEEPALIVE オプションを有効にするにはどうすればよいですか?

みんな、ありがとう。

4

1 に答える 1

1

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;
于 2013-03-12T22:13:35.083 に答える