从套接字读取

Don*_*van 11 c sockets

我需要使用readC中的函数从AF_UNIX套接字读取缓冲区,但我不知道缓冲区大小.

我认为最好的方法是读取N字节,直到读取返回0(套接字中不再有写入者).它是否正确?有没有办法猜测写入套接字的缓冲区的大小?

我以为socket是一个特殊的文件.以二进制模式打开文件并获取大小将有助于我知道给缓冲区的正确大小?

我是C的新手,所以请记住这一点.

epa*_*tel 18

常见的方法是使用ioctl(..)查询FIONREAD套接字,它将返回有多少数据可用.

int len = 0;
ioctl(sock, FIONREAD, &len);
if (len > 0) {
  len = read(sock, buffer, len);
}
Run Code Online (Sandbox Code Playgroud)