配置 CSocket 操作的超時時間

2021-05-24 10:22:53 字數 634 閱讀 7995

摘要:

csocket 操作,如「接收」(receive)、「傳送」(send) 和「連線」(connect) 均是阻塞操作,即要等到操作成功執行完畢或套接字上出現錯誤後,對這些函式的呼叫才有返回結果。 

在某些情況下,操作可能永遠不能成功完成,這將導致程式無限迴圈等待操作完成。一種解決方法是通過程式設計限制完成操作使用的時間。本文將討論這種方法。

實現方法:

這種方法是設定定時,讓它在操作時間過長時啟動。此方法的關鍵在於處理定時器的方式。雖然操作是「阻塞的」,但仍然可以處理到達的訊息。如果通過使用 settimer 設定定時器,那麼可以查詢 wm_timer 訊息,並在收到該訊息時終止操作。該過程中涉及的主要函式有:

windows api 呼叫函式: ::settimer

mfc 函式:csocket::onmessagepending                   csocket::cancelblockingcall

為簡單起見,可以在 csocket 衍生類中封裝該功能。

手寫如下函式:

如何控制C Socket的連線超時時間

最近在socket程式設計的時候發現只能設定send和recieve的timeout時間,而connect方法的timeout是固定的,大概有30 40s,如果用同步方法介面會卡死很長時間 下面介紹兩種通過非同步的方式解決此問題的方法 1.使用beginconnect方法 iasyncresult ...

zuul超時時間配置

server.port 10000 zuul的路由配置 zuul.routes.bid bid zuul.routes.bid consumer consumer 熔斷超時時間配置 hystrix.command.default.execution.isolation.thread.timeouti...

Feign Client 超時時間配置

在spring boot微服務架構中,大部分公司都是利用open feign進行服務間的呼叫,而在業務場景比較簡單的時候,使用預設配置是不會遇到多大問題的。但是如果業務比較複雜,服務要進行比較繁雜的業務計算,那後台很有可能會出現read timeout這個異常,因此定製化配置超時時間就有必要了。影響...