[英]How to create a buffer for reading socket data in C
使用C / C ++套接字编程,以及“读取(socket,buffer,BUFSIZE)”方法。 究竟什么是“缓冲区”我知道char和byte是相同的东西,但是字节数组中有多少元素呢? 缓冲区是否需要能够保存整个消息,直到空字符?
BUFSIZE应该等于缓冲区的大小(以字节为单位)。 当缓冲区已满时,read()将停止读取。 这是一个例子:
#define MY_BUFFER_SIZE 1024
char mybuffer[MY_BUFFER_SIZE];
int nBytes = read(sck, mybuffer, MY_BUFFER_SIZE);
一如既往,在有机会时使用sizeof
。 使用内置运算符sizeof
,您要求编译器计算变量的大小,而不是自己指定。 当实际变量的大小与您的想法不同时,这可以降低引入错误的风险。
所以,而不是做
#define BUFSIZE 1500
char buffer[BUFSIZE];
int n = read(sock, buffer, BUFSIZE);
你真的应该用
char buffer[1500];
int n = read(sock, buffer, sizeof buffer);
注意你不需要围绕sizeof参数的括号,除非参数是类型的名称。
您的套接字实现不需要足够大的缓冲区来保存整个消息,但取决于您正在做什么可能很方便。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.