gpt4 book ai didi

c - C 上是否可以进行同步网络通信

转载 作者:太空宇宙 更新时间:2023-11-04 01:31:04 25 4
gpt4 key购买 nike

我对 C 中的网络概念还很陌生,想知道如何遵循。

假设我有客户端和服务器。

在客户端,我有这样的代码:

   1. send(connfd, var1, var1Size);

2. read(connfd, &x, size1);

3. close(connfd);

服务器也做一个接收和一个发送,例如,

   1. read(connfd, &var, size);

2. send(connfd, var1, varSize);

我的问题如下。在客户端,在客户端执行发送之后——需要一些时间在数据到达服务器之前,在服务器读取数据并发回之前对吧?

那么在客户端代码运行 send 之后,会不会发生这样的事情呢?直接跳转到read,但是此时,服务器已经尚未准备好回复并将其发回 --所以客户端的读取调用(第 2 行)将什么也接收不到。连接会终止吗? (程序将退出)。

它是如何发生的?

最佳答案

这真的与 C 无关,它与网络协议(protocol)和 I/O 的工作方式有关。

答案是,除非你特意使 I/O 非阻塞send()recv() 调用是同步的,即它们将在必要时阻塞,以等待可用的传出带宽或传入数据。

因此您描述的情况通常不会发生,连接不会终止。

关于c - C 上是否可以进行同步网络通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22322897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com