我正在做一个基本的UDP套接字文件传输服务器/客户端设置,使用go-back-n窗口,不幸的是,由于赋值限制,我使用Winsock。
通常,为了管理未完成数据包的超时,我只会使用signal(),但不确定这是否真的在Windows上工作,以及这是否真的是最好的解决方案。是否有一些处理此类套接字超时的最佳方法?或者我最好只用select()来管理超时?
发布于 2012-04-09 05:36:57
如果您的应用程序有一个"main()“函数,那么使用select()来管理超时是最方便的,因为它的优点是它只使用套接字api调用,所以代码应该可以在任何支持bsd样式套接字api的平台上工作,并且不需要windows消息循环。
如果您正在编写一个window风格的应用程序--通常带有一个WinMain()入口点和一个消息循环,那么套接字句柄上的WSAAsyncSelect()将获得发布到HWND的读(写)就绪通知消息。SetTimer同样会发布定期的WM_TIMER通知,并且GetTickCount可以用来检测哪个套接字空闲的时间太长。
https://stackoverflow.com/questions/10066083
复制相似问题