【问题标题】:lighttpd : Close its client socket by throwing error "Connection reset by peer"lighttpd :通过抛出错误“对等方重置连接”来关闭其客户端套接字
【发布时间】:2014-10-22 08:36:44
【问题描述】:

我正在使用 lighttpd 网络服务器来托管我的网站。它工作正常并且能够发送 POST 和 GET 请求。这个 lighttpd 使用 cgiClient 连接到 C 应用程序,能够根据请求从 C 应用程序发送和接收数据。

但是,当我尝试使用 Keep-Alive 连接通过 lighttpd 服务器套接字从 C 应用程序接收巨大大小的字节流(大约 2 - 3 GB)时,它可以正常工作 12 分钟。 12 分钟后,lighttpd 通过抛出 "Connection reset by peer" 错误关闭自己的套接字。

所以我的问题是,是否有任何基于 大小或时间 的限制,以便 lighttpd 关闭自己的套接字?

有什么帮助或建议吗?提前致谢。

【问题讨论】:

    标签: c sockets webserver lighttpd


    【解决方案1】:

    "Connection reset by peer" 表示客户端关闭了连接,但是服务器还有东西要写给客户端。所以这不是由 lighttpd 的限制引起的错误。相反,我假设处理这个巨大的帖子花费了太长时间,因此客户端在服务器可以发送响应之前在一些超时后简单地关闭了与服务器的连接。

    【讨论】:

    • 感谢您的回答。你是对的,我的 C 应用程序有更多数据要发送到 lighttpd。但是 lighttpd 会在 12 分钟后关闭它的套接字。那么是否有任何解决方法使 lighttpd 不会关闭其套接字?我的应用程序继续向 lighttpd 发送字节数据,直到它没有更多数据要发送。
    • lighttpd 关闭套接字,因为客户端(您的应用程序)关闭了它,因此 lighttpd 无法再发送响应。 “由对等方重置连接”是由对等方引起的,而不是由引发错误的一方引起的。另一种选择可能是您在中间有一个防火墙/数据包过滤器,连接超时时间很短,因此服务器无法再访问客户端。
    • 你的意思是我的应用程序关闭了客户端套接字吗?我检查了代码,但我找不到任何意外关闭套接字的东西。我的问题是,在使用 socket () 系统调用创建套接字时,我必须提到套接字是否有任何超时。
    • 您可以为套接字指定超时,但通常没有超时,尽管某些工具包可能会设置一个。您可以尝试数据包捕获(tcpdump 等)来查看连接是否在客户端本身上关闭,或者之间的某些数据包过滤器是否关闭了连接。
    猜你喜欢
    • 2016-12-15
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    相关资源
    最近更新 更多