繁体   English   中英

如何在C中创建用于读取套接字数据的缓冲区

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM