gpt4 book ai didi

c - 套接字读取和未知长度数据

转载 作者:行者123 更新时间:2023-12-02 07:12:14 24 4
gpt4 key购买 nike

我正在尝试用 C 编写代码,其中我想从套接字读取数据,但我不知道传入数据的长度。我无法控制数据发送方。

有什么方法可以读取使用未知长度的套接字读取?

下面是我写的代码,但是它卡在read()中。

static void
process_command ( int fd ) {
fprintf ( stderr, "process_command\n" );
char *buffer = ( char * ) malloc ( sizeof ( char ) * SIZE_TO_READ );
int n = 0;
while ( 1 ) {
fprintf ( stderr, "." );
n = read ( fd, buffer, SIZE_TO_READ );
fprintf ( stderr, "bytes read = %d \n", n );
if ( n <= 0 || n == -1 )
break;
buffer = ( char * ) realloc ( buffer, n + SIZE_TO_READ );
}
char * p = strchr ( buffer, '\n' );
if ( p ) *p = '\0';
fprintf ( stderr, "-----> %s\n", buffer );
if ( buffer ) free ( buffer );
}

本例中的 fd 是 FILENO_STDIN

最佳答案

只需读取一些 block (缓冲区)直到它返回 0,否则您将看到根据协议(protocol)的数据结束。

关于c - 套接字读取和未知长度数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4769830/

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