在涉及套接字的i/o操作上設定超時的方法有一下3種:
(1)呼叫alarm,它在指定超時期滿時產生sigalrm訊號,這個方法涉及訊號處理,而訊號處理在不同的實現上存在差異,而且可能干擾程序中現有的alarm呼叫
(2)在select中阻塞等待 i/o (select有內建的時間限制),以此代替直接阻塞在read或write的呼叫上。
(3)使用較新的so_recvtimeo 和 so_sndtimeo 套接字選項,這個方法的問題在於並非所有的實現都支援這兩個套接字選項。
以上摘自《unix 網路程式設計 卷1:套接字聯網api》。
最近在做專案時,設定套接字超時,首先想到了(2),絞盡腦汁在想如何修改**時。同事提醒可以使用方式(3),最後修改較少**,實現了超時控制功能。
給套接字設定超時檢測
在涉及套接字i o操作上設定超時的方法有以下3種。呼叫alarm,它在指定超時期滿時產生sigalrm訊號。這個方法涉及訊號處理,而訊號處理在不同的實現上存在差異,而且可能干擾程序中現有的alarm呼叫。在select中阻塞等待i o select有內建的時間限制 以此代替直接阻塞在read或wri...
給套接字設定超時檢測
在涉及套接字i o操作上設定超時的方法有以下3種。呼叫alarm,它在指定超時期滿時產生sigalrm訊號。這個方法涉及訊號處理,而訊號處理在不同的實現上存在差異,而且可能干擾程序中現有的alarm呼叫。在select中阻塞等待i o select有內建的時間限制 以此代替直接阻塞在read或wri...
Unix網路程式設計 高階IO套接字設定超時
我們知道。對於乙個套接字的讀寫 read write 操作預設是堵塞的。假設當前套接字還不可讀 寫,那麼這個操作會一直堵塞下去,這樣對於乙個須要高效能的server來說,是不能接受的。所以,我們能夠在進行讀寫操作的時候能夠指定超時值,這樣就讀寫操作就不至於一直堵塞下去。在涉及套接字的i o操作上設定...