|
|
1
1
对于TCP套接字,根本没有所谓的“数据包”。
TCP套接字是字节流的抽象。它的内部机制是抽象的,它同时是可以随时到达的任意字节的源,也是可以随时写入的字节的汇点,但需要注意的是,如果底层传输确定写入缓冲区已满
这是一个非常常见的新手错误,认为
如果程序没有认真检查每个
的确,底层传输层在发送方和接收方之间搅乱TCP套接字的字节,以离散数据包的形式处理该任务。然而,这是一个内部实现细节,通常无法从TCP层访问。您需要重新构建程序的逻辑,这样它就不需要“知道传入数据包的确切大小”,而是将TCP套接字视为完全非结构化字节流的发射器 的确,在许多套接字堆栈上,可以确定套接字或文件描述符上未读字节的数量,并保证读取这么多字节不会受阻。但这仍然不会告诉你任何有用的东西,就那些被称为“数据包”的神秘实体而言。您可能会发现您的TCP套接字具有相同的200个未读字节。在实践中,它们仍然以50和150字节的两个离散数据包的形式到达,并且放在那里,供您的应用程序读取。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |