从缓冲区发送消息时缓冲区会自动清除吗?

when sending a message from the buffer is the buffer automatically cleared?

我正在尝试为套接字编写代码,我首先读取 stdin 并发送到套接字,然后从所述套接字读取以发送到 stdout 到目前为止我有一些东西看起来或多或少是这样的(在你攻击我之前我也不知道为什么我必须这样做):

void read_write(int socket_descriptor_file){
    int n = 1;
    char buffer_in[1024];


    while(n>0){
        n = fread(&buffer_in,sizeof(buffer_in),1, stdin);
        if(n==0) break;

        ssize_t sent_status = send(socket_description_file, buffer_in, sizeof(buffer_in), 0);

        if(sent_status == -1){
            printf("nothing sent");
        }

        ssize_t receive_status = recv(socket_descriptor_file,buffer_in,sizeof(buffer_in), 0);
        if(receive_status == -1){
            printf("nothing received ");
        }
        
        fwrite(&buffer_in,sizeof (char), sizeof(buffer_in), stdout); 
        fflush(stdout);

        


    }
}

我不确定在应用发送函数时所说的缓冲区是否会自动清除,以便我可以使用缓冲区来存储来自 recv 函数的消息。

这段代码objective是模拟主机1和主机2之间的聊天,所以需要立即发送处理消息。

我显然也应该使用轮询功能,但我真的不知道如何使用它。

我不太了解这个主题,所以如果我的代码还有任何问题,请告诉我。我会很高兴听到他们的声音:)

缓冲区只是内存。并且在成功调用后不再需要发送内容。所以recv复用buffer是可以的。可能您想将接收到的字节数 (reveive_status) 而不是缓冲区的大小存储到您的文件中。