利用多线程阻塞方法开发客户端程序,如果开始设置了发送和接收超时,那当超时发生时,会发生什么情况?

qingfeng_happy3 2008-02-22 11:11:18
利用多线程阻塞方法开发客户端程序,用SetSockOpt()函数设置了发送和接收超时时间均为10秒钟,我不明白的是,这10秒钟指的是什么。tcp有个确认重发机制,当发送方发送数据后没有收到接受方返回的确认信息,则重发,这10秒指的是不是从发送到接收到确认信息的时间?还是指的是send将数据拷贝的系统缓冲区,如果10秒没能拷贝成功,则重新拷贝?

...全文
68 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
僵哥 2008-02-22
  • 打赏
  • 举报
回复
建议看文档.
qingfeng_happy3 2008-02-22
  • 打赏
  • 举报
回复
那这个超时具体指的是我上面提到的哪种情况?
僵哥 2008-02-22
  • 打赏
  • 举报
回复
通常超时之后,如果没有协议确定对方收到的数据具体情况,得断并并重新建立连接以保证传输信息的正确性.
僵哥 2008-02-22
  • 打赏
  • 举报
回复
返回 -1,取错误码为超时.
danscort2000 2008-02-22
  • 打赏
  • 举报
回复
SetSockOpt
你可以用来设置连接,发送或者接收超时 ,通常是用在阻塞模式下的
例如,你设置连接超时为30秒
当你使用WINSOCK里的connect函数连接到远程服务器时,如果在30秒内无法完成3次握手
,将返回失败,而默认情况下,大约需要120秒才返回

同样,你设置发送超时为60秒
如果你调用了send函数,如果在60秒内无法将SOCKET缓冲中的数据发送给对方,SEND函数将立即返回
而默认情况下,这个数字比较大,好象在240秒这样

同理可以理解接收
当你调用RECV函数时,例如,60秒,如果60秒内无法接收到你指定长度的数据,RECV将返回失败
而默认情况下将被阻塞并进入长时间等待
僵哥 2008-02-22
  • 打赏
  • 举报
回复
MSDN等文档是干吗?
ligongda99321 2008-02-22
  • 打赏
  • 举报
回复
谁能给解答一下

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧