套接字是否保存HDD上的任何数据

Does sockets save any Data on HDD?

本文关键字:任何 数据 HDD 是否 保存 套接字      更新时间:2023-10-16

我有一个问题看起来可能很奇怪,但我在脑海中出现了。

我用C#制作了一个小型套接字客户端-服务器聊天应用程序。我想知道套接字是在硬盘上保存任何数据,还是只使用RAM?

如果是,那么C/C++的情况也一样吗?

我的意思是,例如,如果我从客户端向服务器发送一些消息。它是保存在硬盘上的某个地方,还是只存在于RAM中?我的意思是,操作系统是否将其存储在某个地方?

如果我问了一个愚蠢的问题,我很抱歉。

感谢

问候

这不是一个愚蠢的问题,但我们也无法回答。这取决于实现,也取决于您想要考虑的堆栈的深度。一般来说,我不希望网络堆栈将数据保存到磁盘上。然而,操作系统可能会将其写入磁盘,作为其虚拟内存管理的一部分(因此,例如,如果这是一个安全问题,那么是的,它最终可能会出现在磁盘上)。

RAM连接到RAM,然后连接到RAM。不涉及HDD。然而,如果物理内存不足,一些包含通过套接字来的数据的内存页可能会交换到磁盘。除此之外,没有涉及HDD。

除非实现了序列化,否则它不会保存在硬盘中(http://en.wikipedia.org/wiki/Serialization)在您的代码中。如果您不在堆中分配内存,那么在C++或malloc中使用new运算符或其家族函数(如果是C),它就不会在堆中写入任何内容。在使用堆时,它可能会访问硬盘驱动器内存,但不是强制性的。如果您阅读以下内容,您可能会对C/C++程序中的内存操作有一个很好的了解http://gribblelab.org/CBootcamp/7_Memory_Stack_vs_Heap.htmlhttp://en.wikipedia.org/wiki/Virtual_memory