套接字是否可以保存硬盘上的任何数据?

时间:2015-02-28 20:03:27

标签: c# c++ c sockets

我有一个可能看起来很奇怪的问题,但我想到了。

我在C#中创建了一个小型套接字客户端 - 服务器聊天应用程序。我想知道插槽是否保存硬盘上的任何数据,或者它们只使用RAM?

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

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

对不起,如果我问了一个愚蠢的问题。

由于

此致

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

RAM连接到RAM。没有硬盘涉及。但是,如果物理内存变低,则包含通过套接字传来的数据的某些内存页面可能会被换出到磁盘。除此之外,不涉及硬盘。

答案 2 :(得分:0)

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