在我的计算中,函数 rand(); 在C语言中输出一个32位数字。
下面的代码会生成一个随机的 uint_8 数吗?或者它可以依赖于平台?
uint8_t var=(uint8_t) rand();
Run Code Online (Sandbox Code Playgroud)
由于计算模数的时间复杂度,我不想使用模运算。
我正在使用 Wireshark,我注意到我的浏览器连接一个网站,它发送一个空的 ACK 数据包(而不是带有 http 请求的 ACK 数据包)。为什么会发生这样的事?在 TCP 和 HTTP RFC 中,并不禁止发送带有数据的 ACK 数据包。这里可以实现延迟ACK吗?
另外,有没有办法在套接字编程中启用/禁用发送带有数据的ACK?
注意:似乎 ACK 数据包可以与数据一起发送(请参阅https://osqa-ask.wireshark.org/questions/36023/tcp-3-way-handshake-data-in-third-message) 。不过,我想知道如何强制它。

根据Unix网络编程,当一个套接字写入两次到一个封闭的套接字(在一个FIN数据包之后),然后它在第一次成功发送,但从另一个主机接收一个RST数据包.由于主机收到RST,因此套接字被破坏.因此,在第二次写入时,接收到SIGPIPE信号,并返回EPIPE错误.
但是,在发送手册页中可以返回ECONNRESET,这意味着接收到RST数据包.当它返回ECONNRESET时 - 没有返回信号.
有什么情况可以退回ECONNRESET?为什么在这种情况下没有SIGPIPE信号?
注意:我在这里检查过类似的问题.但是,当我在我的linux计算机上运行时,send返回了EPIPE错误,而不是ECONNRESET.
事实证明,CRC32C 比 CRC32 提供更好的结果(改进的汉明距离和更快的实现)。为什么以太网仍然使用旧的 CRC 32 而不是 CRC32C?