1.socket超時,
伺服器端程式
# -*- coding: cp936 -*-
"""設定超時時間
測試端程式時間設定分別大於和小於5,大於5時,使用異常來捕獲socket.timeout
"""import socket
host = ""
port = 50000
s = socket.socket(socket.af_inet,socket.sock_stream)
s.bind((host,port))
s.listen(5)
while 1:
clientsock,clientaddr = s.accept()
try:
# 將超時時間設定為5
clientsock.settimeout(5)
buf = clientsock.recv(8196)
if len(buf) != 0:
print buf
except socket.timeout:
print "time out"
clientsock.shutdown(socket.shut_rd)
clientsock.close()
2.socket超時戶端測試程式
# -*- coding: cp936 -*-
"""設定超時時間客戶端
第一次測試將sleep的引數設定為10,伺服器端顯示為"timeout"
第二次測試將sleep的引數設定為2,伺服器端顯示為"message comes from timeout client"
"""import socket
host = "localhost"
port = 50000
s = socket.socket(socket.af_inet,socket.sock_stream)
s.connect((host,port))
import time
# 執行兩次,分別使用不同的時間值,指定大小依據server端的設定,現在服務端為5
# 測試時使用10和2,測試settimeout的作用
time.sleep(10)
s.send("message comes from timeout client" + "\r\n")
s.shutdown(socket.shut_wr)
s.close()
socket 超時設定
在send recv 過程中有時由於網路狀況等原因,收發不能預期進行,而設定收發超時控制 這樣做在linux環境下是不會產生效果的,須如下定義 struct timeval timeout 設定傳送超時 setsockopt socket,sol socket,so sndtimeo,char ti...
socket超時設定
在使用socket程式設計時,肯定會遇到設定超時的問題。有些人可能會認為socket類的setsotimeout sotimeout 方法就是設定超時。其實不然,socket設定超時分為兩種,上面提到為讀寫超時。第一 建立連線的超時設定,如下 socket.connect socketaddress...
socket 設定阻塞超時
connect 設定超時 核心connect超時通常為75秒,我們可以設定更小的時間如10秒來提前從connect中返回 這裡用使用訊號處理機制,呼叫alarm,超時後產生sigalrm訊號 也可使用select實現 sigfunc sigfunc sigfunc signal sigalrm,co...