我在 C 中写了一个小SocketWrapper只是为了学习而且它有效。我正在发送GET-Request并接收缓冲区[1024]。但我想阅读的内容通常超过1024.如何确定长度并接收整个数据?
#include <stdio.h>
#include <stdbool.h>
#include "lib/output.h"
#include "lib/network.h"
int main(int argc, char *argv[]) {
debug_verbose = true;
struct IPv4_CLIENT client;
client = socketIPv4("google.com", 80);
if(socketIPv4_connect(client) < 0) {
error("Connect failed!");
return -1;
}
char send_buffer[256];
bzero(send_buffer, 256);
printline("Send: ");
fgets(send_buffer, 255, stdin);
socketIPv4_write(client, send_buffer);
char receive_buffer[1024];
socketIPv4_read(client, receive_buffer, 1024);
hexdump(receive_buffer, 1024);
socketIPv4_close(client);
return 0;
}
答案 0 :(得分:2)
考虑以下两种方法之一:
在实际数据之前发送要传输的数据大小。使用固定长度格式传输大小。
定义标记数据末尾的任何分隔符,并继续重新分配接收缓冲区,直到收到分隔符。
答案 1 :(得分:2)