当我们使用原始套接字时,我们需要处理所有事情,包括处理我们需要处理的数据包。
假设我收到2个10字节大小的数据包。
该数据包包含消息helloworld和helooworld。
假设helloworld数据包是我从网络收到的第一个数据包,我们知道helloworl德数据包将被放入缓冲区。
但在处理helloworld数据包之前,我收到了heloworld的数据包。
缓冲区中是否有被覆盖的数据?
示例代码:
struct sockaddr _addr;
socklen_t size = sizeof(_addr);
unsigned char buffer[20];
int fd = socket(AF_PACKET,SOCK_RAW,htons(ETH_P_ALL));
recvfrom(fd,buffer,sizeof(buffer),0,&_addr,&size);
我的问题是:
当我收到helloworld数据包时,它将被放置在索引0-9处,但在我处理helloworl德数据包之前,我也会收到helooworld数据包
helooworld数据包会被放置在索引0-9中吗?这意味着它将覆盖之前的数据或放置在索引10-19中?