python3 socket 超時設定

2021-10-02 07:59:42 字數 1273 閱讀 3782

針對鏈結(connect)時候的超時:

# 法一:

import socket

socket.setdefaulttimeout(5)

sock = socket.socket(socket.af_inet, socket.sock_stream)

sock.connect((host, port))

sock.sendall('***')

sock.recv(1024)

sock.close()

'''20160716 update

socket.setdefaulttimeout(5) 此句必須放到建立鏈結的前面,否則超時設定無效果

'''

# 法二:

import socket

sock = socket.socket(socket.af_inet, socket.sock_stream)

sock.settimeout(5)

sock.connect((host, port))

# 恢復預設超時設定,設定某些情況下socket進入阻塞模式(如makefile)

sock.settimeout(none)

sock.connect((host, port))

sock.sendall('***')

sock.recv(1024)

sock.close()

針對接收(recv)資料時的超時:

# 法一:

import socket

socket.setdefaulttimeout(5)

sock = socket.socket(socket.af_inet, socket.sock_stream)

sock.connect((host, port))

sock.sendall('***')

# 連線和接收的時候都設定一次超時

sock.settimeout(5)

sock.recv(1024)

sock.close()

# 法二[未驗證]:

import select

mysocket.setblocking(0)

ready = select.select([mysocket], , , timeout_in_seconds)

if ready[0]:

data = mysocket.recv(4096)

python3 socket搭建簡易伺服器

踩了一上午的坑之後,終於對網路程式設計有了一點大致的 基本的了解。真的是0基礎,之前對socket網路程式設計一點都不知道。感覺自己與時代脫軌。首先我想對這些美妙的專業術語進行一番搜尋 表示如果把伺服器和客戶端比作一對情侶的話,那麼套接字就是他們相互擁抱的雙手。tcp?http?http是高層協議,...

socket 超時設定

在send recv 過程中有時由於網路狀況等原因,收發不能預期進行,而設定收發超時控制 這樣做在linux環境下是不會產生效果的,須如下定義 struct timeval timeout 設定傳送超時 setsockopt socket,sol socket,so sndtimeo,char ti...

Socket超時操作

1.socket超時,伺服器端程式 coding cp936 設定超時時間 測試端程式時間設定分別大於和小於5,大於5時,使用異常來捕獲socket.timeout import socket host port 50000 s socket.socket socket.af inet,socket...