ioctlsocket封装
遇到一些重口味的客户,非得要求所有平台上按Windows API封装函数,记下备忘。
根据MSDN,Windows似乎很不愿意支持ioctl和fcntl,专门弄进来一个ioctlsocket,传递的三个命令分别是FIONBIO用于设置阻塞属性,FIONREAD用于读取缓冲区未读字节数,SIOCATMARK用来测试TCP的紧急指针,网上一搜,发现Linux上也是有对应的这三个cmd,一些人甚至将这三个命令视为套接字常用命令,对于我这样的标准拥护者,就查了一下POSIX标准,发现:
FIONREAD这个是文件的通用操作,用来获取可读字节,归属于ioctl函数的命令
FIONBIO已经被fcntl(fd, F_SETFL, O_NONBLOCK);所取代
SIOCATMARK则有一个专门的函数:sockatmark(sock)取代