Socket超時操作

2021-07-01 19:08:41 字數 1239 閱讀 1745

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...