T tangrh Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-18 #1 原来在阻塞模型下,通过setsockopt设置sol_socket的so_rcvtimeo可以设置超时,当服务端发起recv调用时,如果过了此时间还未收到数据,那么返回10060超时错误,现在改用完成端口后,使用wsarecv接收数据,发现原来可用的设置现在不管用了,该如何解决它呢
原来在阻塞模型下,通过setsockopt设置sol_socket的so_rcvtimeo可以设置超时,当服务端发起recv调用时,如果过了此时间还未收到数据,那么返回10060超时错误,现在改用完成端口后,使用wsarecv接收数据,发现原来可用的设置现在不管用了,该如何解决它呢
E ego Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-18 #2 GetQueuedCompletionStatus( CompletionPort, BytesTransferred, socket, Overlapped, INFINITE //这个参数应该就是你想要的,infinite表示永远不会超时 ) ;
GetQueuedCompletionStatus( CompletionPort, BytesTransferred, socket, Overlapped, INFINITE //这个参数应该就是你想要的,infinite表示永远不会超时 ) ;
T tangrh Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-18 #3 to ego: 呵呵,这个我试过了,这个参数仅仅用于GetQueuedCompletionStatus到时候返回,并不会导致原来的重叠操作失败,比如我调用了一下wsarecv,GetQueuedCompletionStatus设超时为1分钟,那么1分钟到时,如果仍未收到数据,那么GetQueuedCompletionStatus也会返回,但此时重叠结构内容为空,而且原来的wsarecv还在进行
to ego: 呵呵,这个我试过了,这个参数仅仅用于GetQueuedCompletionStatus到时候返回,并不会导致原来的重叠操作失败,比如我调用了一下wsarecv,GetQueuedCompletionStatus设超时为1分钟,那么1分钟到时,如果仍未收到数据,那么GetQueuedCompletionStatus也会返回,但此时重叠结构内容为空,而且原来的wsarecv还在进行
E ego Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-18 #4 呵呵,不好意思,又犯了同样的错误,你来这里看看吧,正在讨论 http://www.delphibbs.com/delphibbs/dispq.asp?lid=2422504