提问人:Rajat Aggarwal 提问时间:10/27/2023 更新时间:10/28/2023 访问量:58
是否有单独的缓冲区用于读取和写入库调用?
are there separate buffer for read and write library calls?
问:
我正在尝试了解如何从同一文件描述符读取和写入数据。
network - socket
connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)
write(sockfd, buff, large_buffer_size)
当程序/操作系统将数据写入文件描述符时,假设我们同时从服务器接收数据。
现在,我想知道如何确保数据不会损坏,即要写入的数据和要读取的数据不会混合,因为我们指向相同的文件描述符?
答:
2赞
John Bollinger
10/28/2023
#1
套接字的不寻常之处在于它们通过单个文件描述符提供全双工通信。内核会执行使其平稳和正确工作所需的工作,其中包括,是的,分别缓冲传出和传入的数据。从语义上讲,每个套接字确实将两个单独的通道绑定在一起,每个方向一个。您甚至可以彼此独立地关闭这些通道。
评论