0

我正在学习 GTK 库。现在,我正在尝试使用 GSocketClient。我正在连接到远程登录服务器以读取一些数据。这段代码

    ...
    GInputStream* istream = g_io_stream_get_input_stream(G_IO_STREAM(scon));
    GOutputStream* ostream = g_io_stream_get_output_stream(G_IO_STREAM(scon));
    
    gsize dlen = 0;
    gchar buffer[1024];
    GError* error = NULL;
    
    while (g_input_stream_read_all(istream, buffer, 1024, &dlen, NULL, &error)) {
    
        for (int i = 0; i < dlen; i++) {
            g_print("%c", buffer[i]);
        }
        
        if (dlen < 1024) {
            break;
        }
    }
    
    if (error != NULL) {
    ....

获取第一个块(1024 字节),然后阻塞直到连接中断。我做错了什么?谢谢 :)

4

1 回答 1

0

哦,我明白了。方法 g_input_stream_read_all() 尝试读取 COUNT 个字节,直到获得 EOF 或错误。我认为它试图读取 COUNT 个可用字节。它被阻止是因为 server-answer 的大小小于 2048 字节。

于 2021-10-30T21:45:54.087 回答