我正在编写一个便携式Socket类,它支持发送和接收的超时...为了实现这些超时我正在使用select()....但是,我有时需要知道我被阻止了多长时间里面select()当然在Linux上我通过gettimeofday()在我打电话之前和之后调用select()然后timersub()用来计算delta来实现...
鉴于select()Windows接受struct timeval它的超时,我应该用什么方法来取代Windows上的gettimeofday()?
有人可以帮我在Windows XP上使用Visual Studio C++ 2008的gettimeofday()函数吗?这是我在网上找到的代码:
#include < time.h >
#include <windows.h>
#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS)
#define DELTA_EPOCH_IN_MICROSECS 11644473600000000Ui64
#else
#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL
#endif
struct timezone
{
int tz_minuteswest; /* minutes W of Greenwich */
int tz_dsttime; /* type of dst correction */
};
int gettimeofday(struct timeval *tv, struct timezone *tz)
{
FILETIME ft;
unsigned __int64 tmpres = 0;
static int tzflag;
if (NULL != tv)
{
GetSystemTimeAsFileTime(&ft);
tmpres |= ft.dwHighDateTime;
tmpres <<= 32;
tmpres |= ft.dwLowDateTime;
/*converting file time to …Run Code Online (Sandbox Code Playgroud)