inline int sockRead (sockType s,void* data,int len ,sockaddr* addr=nullptr,socklen_t* fromLen=nullptr){ int r=::recvfrom(s,static_cast(data),len,0,addr,fromLen); if(r>0)return r; auto e=GetError(); if(0==r||ECONNRESET==e)raiseFiasco("sockRead eof",s,len,e); if(EAGAIN==e||EWOULDBLOCK==e #ifdef CMW_WINDOWS ||WSAETIMEDOUT==e #endif )return 0; raise("sockRead",s,len,e); }
我最近添加了ifdef。如果我在Windows上使用ETIMEDOUT,它将进行编译,但与WSAETIMEDOUT的工作方式不同。我想知道是否有一种在Windows上使用ETIMEDOUT的方法,所以我不需要ifdef。谢谢。该函数来自此处:https://github.com/Ebenezer-group/onwards/blob/master/src/cmw/Buffer.hh