您的位置:首页 > 编程语言

winsock编程如何设置发送与接收超时参数?

2011-12-09 19:48 351 查看
在TCP通信中,为了防止阻塞式调用send函数与recv函数时程序在这两个函数处等待过久甚至一直等待,我们需要设置send函数与recv函数的超时时间长度。

要达到这个目的,在winsock编程中,我们调用setsockopt来完成这个任务。

int setsockopt(
SOCKET s,
int level,
int optname,
const char FAR *optval,
int optlen
);


此函数的相关文档可参看:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms740476(v=vs.85).aspx

http://baike.baidu.com/view/569217.htm

此处以一个用例来说明如何解决设置发送超时与接收超时设置的问题:

int nTimeout = 1000;
//设置发送超时为1000ms
if (SOCKET_ERROR == setsockopt( this->m_socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&nTimeout, sizeof(int)))
{
fprintf(stderr, "Set SO_SNDTIMEO error !\n");
}

//设置接收超时为1000ms
if (SOCKET_ERROR == setsockopt( this->m_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&nTimeout, sizeof(int)))
{
fprintf(stderr, "Set SO_RCVTIMEO error !\n");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: