c - 在 tcp 服务器中,每隔一秒调用一次 select()。如何区分两个或多个到达 "1 second"的数据包?

标签 c sockets tcp

我每 1 秒调用一次选择系统调用。如果两个或更多数据包在一秒内到达。 read() 将其视为一个数据包。我想知道有多少已经到达并分别读取每个数据包?请通过不减少该时间“1 秒”来解决问题。

最佳答案

TCP 是一种 协议(protocol),它不会在应用程序级别公开单个数据包。

如果您需要处理单个数据包,则需要切换到数据报 协议(protocol),例如专为此类用途设计的 UDP。但是请注意,这将需要更改发送方和接收方代码,以及重新设计协议(protocol)以手动处理重传。

关于c - 在 tcp 服务器中,每隔一秒调用一次 select()。如何区分两个或多个到达 "1 second"的数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20324386/

相关文章:

python - 使用ctypes从python中的C访问结构中的二维数组

c - 从多个线程写入套接字时,是否需要 'select' 来等待写入可用性?

java - 简单的 java 套接字安全注意事项

tcp - 使用单个 tcp 套接字读取和写入线程

c - 并发 tcp 客户端服务器程序和迭代程序有什么区别?

c - 我的语法中的函数定义有问题

c++ - 为什么断言宏的定义在发布版本中不能只是 `#define assert(expression) 0` ?

java - 无法在 jTextField 中显示数据

java - 是否可以在全双工 TCP 通信中使用 Netty?

swift - 一个socket连接占用两个tcp端口正常吗?