小编Pet*_*nen的帖子

Linux上TCP重传的应用控制

对于不耐烦:

如何改变的价值/proc/sys/net/ipv4/tcp_retries2在Linux中单个连接,使用setsockopt(),ioctl()或者这样,或者是这可能吗?

更长的解密:

我正在开发一个使用长轮询HTTP请求的应用程序.在服务器端,需要知道客户端何时关闭连接.准确性并不重要,但肯定不能是15分钟.接近一分钟就可以了.

对于不熟悉该概念的人,长轮询HTTP请求的工作方式如下:

  • 客户端发送请求
  • 服务器使用HTTP标头进行响应,但保持响应处于打开状态.使用分块传输编码,允许服务器在可用时发送数据位.
  • 当发送所有数据时,服务器发送"关闭块"以表示响应已完成.

在我的应用程序中,服务器每隔一段时间就向客户端发送"心跳"(默认为30秒).心跳只是一个作为响应块发送的换行符.这是为了保持线路忙,以便我们通知连接丢失.

客户端正常关闭时没有问题.但是当它强制关闭时(例如客户端机器断电),不会发送TCP重置.在这种情况下,服务器发送心跳,客户端不会发送确认.在此之后,服务器在放弃并向应用层(我们的HTTP服务器)报告失败后,继续重传该数据包大约15分钟.在我的情况下等待15分钟太久了.

我可以通过写入以下文件来控制重传时间/proc/sys/net/ipv4/:

tcp_retries1 - INTEGER
    This value influences the time, after which TCP decides, that
    something is wrong due to unacknowledged RTO retransmissions,
    and reports this suspicion to the network layer.
    See tcp_retries2 for more details.

    RFC 1122 recommends at least 3 retransmissions, which is the
    default.

tcp_retries2 - INTEGER
    This value influences the timeout of an alive TCP connection,
    when RTO retransmissions …
Run Code Online (Sandbox Code Playgroud)

linux network-programming tcp

29
推荐指数
2
解决办法
4万
查看次数

strtod下溢,返回值!= 0

这是我的测试代码:

errno = 0;
d = strtod("1.8011670033376514e-308", NULL);
Run Code Online (Sandbox Code Playgroud)

有了这个代码,我得到d == 1.8011670033376514e-308errno == ERANGE.

来自strtod(3):

如果正确的值会导致溢出,则返回加号或减号HUGE_VAL(HUGE_VALF,HUGE_VALL)(根据值的符号),并ERANGE存储errno.如果正确的值会导致下溢,则返回零并ERANGE存储errno.

因此,在我看来,要么errno应该为零(无错误),要么d应为零(下溢).

这是一个错误,还是我错过了什么?对于许多不同版本的eglibc和gcc,会发生这种情况.

c strtod

12
推荐指数
1
解决办法
1099
查看次数

如何使rsync保留未更改文件的时间戳

我使用静态网站生成器,在每次运行时生成网站中的所有文件.生成文件后,我使用rsync来复制内容.

为了实现更好的缓存,我希望rsync不要修改目标中未更改的那些文件的时间戳.可能吗?

编辑:为了清楚说明,所有源文件的时间戳总是比目标文件的时间戳更新.

rsync timestamp file

6
推荐指数
1
解决办法
1万
查看次数

使用来自多个(虚拟)机器的单个 emacs 实例

我喜欢 emacsclient。它允许我使用单个 Emacs 框架进行所有编辑,甚至当程序想要打开编辑器(即export EDITOR=emacsclient)时也是如此。

我也想让它在虚拟机上也能这样工作。我可以在我的单帧设置中使用 Tramp 来使用 Emacs 来编辑远程文件,它工作得很好,但还不够。当我调用git commitor时sudoedit,我将不得不使用恰好安装在远程计算机上的蹩脚的基于终端的编辑器。

那么,有没有像 emacsclient 这样可以跨多台机器工作的东西呢?

emacs remote-access emacsclient

3
推荐指数
1
解决办法
1327
查看次数