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

在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");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值