【问题标题】:Delphi: Limiting TCP connectionsDelphi:限制 TCP 连接
【发布时间】:2010-09-29 08:52:03
【问题描述】:

我在我的 Delphi 应用程序中使用 TServerSocket 组件。我想限制客户端连接,比如说一千。不幸的是,我不知道该怎么做。该组件不提供任何属性,如“MaxConnections”或任何其他类似的属性。

我使用 OnGetThread 事件创建新的服务器线程 (TServerClientThread)。为了获得活动连接的数量,我使用了“Socket.ActiveConnections”属性。

很遗憾,那时我不知道该怎么办。当连接数超过限制时,我尝试不在 OnGetThread 过程中创建任何线程,但它没有改变任何东西 - 客户端,即使它无法发送或接收任何信息,它也可以连接到服务器并保持连接。如何不让新客户端连接或只允许他们连接但立即断开连接?

【问题讨论】:

  • 好问题。我正在考虑自己做这样的事情,非常及时!

标签: delphi sockets tcp connection limit


【解决方案1】:

我上次使用 Delphi 是几年前,但我有类似的情况要处理,我的经验可能对你有用:我面临同样的问题,不想切换到“Indy”组件因为(大)应用程序不值得移植。 据我记得,您应该在服务器套接字上有一个 onClientConnect 事件,这是我检查的限制:

.onClientConnect( Sender: TObject; aSocket: T... )
begin
    if( YourServerSocket.ActiveConnections > YourDefinedMaxConnections )
    begin
        // Drop the connection
        aSocket.Close;
    end;
end

除此之外我不记得更多了,但我认为我在这些方面做了一些事情,或者至少这是我想出的事情。

【讨论】:

    猜你喜欢
    • 2017-03-03
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2016-05-01
    • 2011-10-04
    • 1970-01-01
    相关资源
    最近更新 更多