我在win10 64位系统上写的代码,在vs2010里查看了下头文件:
/*
* Structure used in select() call, taken from the BSD file sys/time.h.
*/
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* and microseconds */
};
是long类型的,注释上是s,但是实际测试下来表现的是ms
我在win10 64位系统上写的代码,在vs2010里查看了下头文件:
/*
* Structure used in select() call, taken from the BSD file sys/time.h.
*/
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* and microseconds */
};
是long类型的,注释上是s,但是实际测试下来表现的是ms[/quote]
我很好奇地去查了下文档
不清楚你是怎么设置的超时,如果是用select函数,那应该没有这个问题,这个我是用过的
如果你是用setsockopt的SO_RCVTIMEO属性设置的超时
看这个地址上的说明https://msdn.microsoft.com/en-us/library/ms740476(VS.85).aspx
SO_RCVTIMEO DWORD Sets the timeout, in milliseconds, for blocking receive calls.
很明显,那就是毫秒,因为那个参数是const char*类型
你传进去多少它也只取DWORD大小
你传一个timeval进去,实际上它也只取了tv_sec字段,然后转换成了毫秒数
我在win10 64位系统上写的代码,在vs2010里查看了下头文件:
/*
* Structure used in select() call, taken from the BSD file sys/time.h.
*/
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* and microseconds */
};
是long类型的,注释上是s,但是实际测试下来表现的是ms[/quote]
不用怀疑这个结构体变量tv_sec是秒还是毫秒,这个结构体大家都在用,并且已经是经过大家的验证过得,是秒就不可能是毫秒;还是要检查自己的代码逻辑。
我在win10 64位系统上写的代码,在vs2010里查看了下头文件:
/*
* Structure used in select() call, taken from the BSD file sys/time.h.
*/
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* and microseconds */
};
是long类型的,注释上是s,但是实际测试下来表现的是ms[/quote]
那是不可能的,注释上是s(秒)那么就是second(秒)不可能是毫秒的,如果不停的刷屏,那么建议检查代码逻辑,很有可能是出在代码逻辑上,而不是这个结构体里的秒还是毫秒;