从缓冲区发送消息时缓冲区会自动清除吗?
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) 而不是缓冲区的大小存储到您的文件中。
我正在尝试为套接字编写代码,我首先读取 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) 而不是缓冲区的大小存储到您的文件中。