小编use*_*894的帖子

我们可以使用简单的转换创建一个随机的 uint8_ 数字吗?

在我的计算中,函数 rand(); 在C语言中输出一个32位数字。

下面的代码会生成一个随机的 uint_8 数吗?或者它可以依赖于平台?

uint8_t var=(uint8_t) rand();
Run Code Online (Sandbox Code Playgroud)

由于计算模数的时间复杂度,我不想使用模运算。

c

5
推荐指数
2
解决办法
409
查看次数

为什么HTTP客户端在三次握手的ACK消息中发送空数据?

我正在使用 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) 。不过,我想知道如何强制它。 在此输入图像描述

sockets wireshark

4
推荐指数
1
解决办法
1750
查看次数

发送Linux C中的ECONNRESET

根据Unix网络编程,当一个套接字写入两次到一个封闭的套接字(在一个FIN数据包之后),然后它在第一次成功发送,但从另一个主机接收一个RST数据包.由于主机收到RST,因此套接字被破坏.因此,在第二次写入时,接收到SIGPIPE信号,并返回EPIPE错误.

但是,在发送手册页中可以返回ECONNRESET,这意味着接收到RST数据包.当它返回ECONNRESET时 - 没有返回信号.

有什么情况可以退回ECONNRESET?为什么在这种情况下没有SIGPIPE信号?

注意:我在这里检查过类似的问题.但是,当我在我的linux计算机上运行时,send返回了EPIPE错误,而不是ECONNRESET.

c sockets linux econnreset

3
推荐指数
2
解决办法
3974
查看次数

为什么以太网使用 CRC-32 而不是 CRC-32C?

事实证明,CRC32C 比 CRC32 提供更好的结果(改进的汉明距离和更快的实现)。为什么以太网仍然使用旧的 CRC 32 而不是 CRC32C?

crc32 ethernet crc

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

标签 统计

c ×2

sockets ×2

crc ×1

crc32 ×1

econnreset ×1

ethernet ×1

linux ×1

wireshark ×1