Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 服务器-客户端套接字数据传输_C++_Sockets_Networking_Network Programming - Fatal编程技术网

C++ 服务器-客户端套接字数据传输

C++ 服务器-客户端套接字数据传输,c++,sockets,networking,network-programming,C++,Sockets,Networking,Network Programming,我试图理解服务器上的数据何时到达客户端,反之亦然 假设我们有一个服务器,它在机器1的某个端口绑定tcp/ip套接字 假设我们有一个客户端,它位于机器#2上,并成功地将tcp/ip套接字连接到机器#1的同一端口 当服务器向套接字写入数据,但客户端尚未开始读取时,数据将存储在哪里 数据将存储在机器#1的网络层/套接字的内部缓冲区中,等待客户端。当客户端开始读取数据时,网络层将收到通知并传输数据 或者数据将自动传输到机器#2的网络层/套接字的内部缓冲区并在那里等待?当应用程序开始读取数据时,数据是否已

我试图理解服务器上的数据何时到达客户端,反之亦然

假设我们有一个服务器,它在机器1的某个端口绑定tcp/ip套接字

假设我们有一个客户端,它位于机器#2上,并成功地将tcp/ip套接字连接到机器#1的同一端口

当服务器向套接字写入数据,但客户端尚未开始读取时,数据将存储在哪里

数据将存储在机器#1的网络层/套接字的内部缓冲区中,等待客户端。当客户端开始读取数据时,网络层将收到通知并传输数据

或者数据将自动传输到机器#2的网络层/套接字的内部缓冲区并在那里等待?当应用程序开始读取数据时,数据是否已经存在


我们是否有一种机制来选择我们喜欢的流程?

操作系统不实现OSI服务器层模型。IP服务模型更接近于现实世界中使用的模型,但请记住,模型只是模型,使用任何模型都不需要任何东西。有一些使用中的协议实际上不适合模型。@RonMaupin实际上模型在这个问题上并不重要。我想了解,数据是传输到客户端机器,等待读取,还是在服务器机器上等待读取请求。所以从您的问题中删除它。套接字具有发送缓冲区和接收缓冲区。在这种情况下,相关的缓冲区是发送方的发送缓冲区和接收方的接收缓冲区。@user207421已删除。当服务器发送消息,但客户端没有读取消息时,哪些缓冲区将存储该消息?如果消息已发送到接收方且接收方已确认,则该消息位于接收方的接收缓冲区中,否则仍位于发送方的发送缓冲区中。