我试图了解数据是如何从同一个文件描述符读取和写入。
network - socket connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr) write(sockfd, buff, large_buffer_size)
字符串当程序/操作系统正在向文件描述符写入数据时,假设同时我们正在从服务器接收数据。现在,我想知道它是如何确保数据不被损坏,即数据是要写入和数据是要读取不混合,因为我们指向相同的文件描述符?
fquxozlt1#
套接字是不寻常的,因为它们通过单个文件描述符提供全双工通信。内核做了一些需要做的事情来使其顺利正确地工作,其中包括,是的,分别缓冲传出和传入数据。从语义上讲,每个套接字都绑定了两个独立的通道,每个方向一个。你甚至可以独立地关闭这些通道。
1条答案
按热度按时间fquxozlt1#
套接字是不寻常的,因为它们通过单个文件描述符提供全双工通信。内核做了一些需要做的事情来使其顺利正确地工作,其中包括,是的,分别缓冲传出和传入数据。从语义上讲,每个套接字都绑定了两个独立的通道,每个方向一个。你甚至可以独立地关闭这些通道。