TcpConnection:封装的就是建立连接之后得到的用于通信的文件描述符,然后基于这个文件描述符,在发送数据的时候,需要把数据先写入到一块内存里边,然后再把这块内存里边的数据发送给客户端,除了发送数据,剩下的就是接收数据。接收数据,把收到的数据先存储到一块内存里边。也就意味着,无论是发送数据还是接收数据,都需要一块内存。并且这块内存是需要使用者自己去创建的。所以就可以把这块内存做封装成Buffer。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>学习笔记>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1.文件描述符与数据发送:
2.Buffer结构体及其成员说明:
3.Buffer API函数:
4.初始化Buffer:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>Buffer的创建和销毁>>>>>>>>>>>>>>>>>>>>>>>>>>>>
struct Buffer {
// 指向内存的指针
char* data;
int capacity;
int readPos;
int writePos;
}
?(一)Buffer的初始化
// 初始化
struct Buffer* bufferInit(int size);
// 初始化
struct Buffer* bufferInit(int size) {
struct Buffer* buffer = (struct Buffer*)malloc(sizeof(struct Buffer));
if(buffer!=NULL) {
buffer->data = (char*)malloc(sizeof(char) * size);
buffer->capacity = size;
buffer->readPos = buffer->writePos = 0;
memset(buffer->data, 0, size);
}
return buffer;
}
?(二)Buffer的销毁
// 销毁
void bufferDestroy(struct Buffer* buf);
// 销毁
void bufferDestroy(struct Buffer* buf) {
if(buf!=NULL) {
if(buf->data!=NULL) { // buf->data指向有效的堆内存
free(buf->data); // 释放
}
}
free(buf);
}