如何从C中的套接字文件描述符读取时检测分隔符?

Com*_*PVT 1 c sockets

在C中,当从套接字文件描述符读入缓冲区时,如果检测到分隔符,如何使读取停止?我们假设分隔符是'>'字符.

read(socket_filedes, buffer, MAXSZ);
/* stop if delimiter '>' is detected */
Run Code Online (Sandbox Code Playgroud)

dbu*_*ush 5

你有两个选择:

  • 一次读取一个字节,直到遇到分隔符.这可能是非常低效的.
  • 一次读入一个完整缓冲区的数据,然后在那里查找分隔符.找到它后,将剩余数据保存在另一个缓冲区中并处理所需的数据.当您准备再次读取时,将保存的数据放回缓冲区并read使用缓冲区中下一个可用字节的地址进行调用.