我遇到GIO问题。我通过网络传输数据,它可以很好地处理接收到的字节百分比(通过STRINGSIZE更改),但之后它不会复制任何内容。例如,如果STRINGSIZE为350,则仅复制超过50个字节。有任何想法吗?
gboolean recieve_complete(GSocketService *socket, GSocketConnection *connection, GObject *source_object, gpointer user_data){
GInputStream * input;
int i;
int *recieved_data = malloc(sizeof(int) * (STRINGSIZE + 50));
for(i = 0; i < (STRINGSIZE + 50); i++)
recieved_data[i] = 0; //Sets register to empty.
input = g_io_stream_get_input_stream(G_IO_STREAM(connection));
g_input_stream_read (input, recieved_data, (STRINGSIZE + 50), NULL, NULL);
proccess_data(recieved_data);
free(recieved_data);
}
答案 0 :(得分:0)
您没有评估实际读取的字节数g_input_stream_read
返回 - 这可能与请求的字节数不同。
https://developer.gnome.org/gio/2.32/GInputStream.html#g-input-stream-read
使用随机字符串进行更多输出和示例传输会很不错。
答案 1 :(得分:0)
drahnr是对的。如果您想一次获取所有数据,请改用g_input_stream_read_all。