UDP Socket
广播中,sendto()将数据发送到一个结尾为“255”的IP地址,应用中发现sendto()函数耗时过长。参考了“http://topic.csdn.net/t/20040722/22/3201560.html”中的内容后,经过在自己的局域网内实验,得到以下经验:
1、广播到“*.*.*.255”耗时很长(此时局域网内只要很少机台机子工作并接受该广播数据,而不是整个IP段的机子都在工作),可以用setsockopt函数设置sendto的超时时间:
SetSendTimeOutValue(unsigned int usec)
{
if(
!IsValid() ) return false;
int sta =
-1;
int
msec;
msec =
usec/1000;
if(msec
< 1) msec = 1;
unsigned int
seco = (unsigned int)usec/1000000;
unsigned int
useco = usec00000;
struct
timeval tv_out;
tv_out.tv_sec = seco;
tv_out.tv_usec = useco;
#ifdef _WIN32
sta =
setsockopt(isocket, SOL_SOCKET, SO_SNDTIMEO, (char
*)&msec, sizeof(msec));
<