python socket併發模型 非阻塞IO

2021-10-01 16:45:46 字數 1013 閱讀 1558

設定將原本阻塞io變為非阻塞io

方法1:sockfd.setblocking(bool)

方法2:sockfd.settimeout(sec)

from socket import

*from time import ctime,sleep

f =open

('log.txt'

,'a'

)#日誌檔案

s = socket(

)s.bind(

'0.0.0.0'

,8888

)s.listen(5)

#設定套接字非阻塞,

#方法1:sockfd.setblocking(bool),引數預設為true,設定為false時則套接字變為非阻塞

#s.setblocking(false)

#方法2:設定超時時間sockfd.settimeout(sec)

s.settimeout(3)

while

true

:try

: c,addr = s.accept(

)print

('connect from'

,addr)

#設定為非阻塞後,不必一直等待,可以幹點別的事

except

(blockingioerror,timeout)

as e:

#blockioerror為方法1的報錯,timeout為方法2的報錯,通過捕捉異常後的**實現一些事件

#當沒有客戶端連線我的時候,每隔2秒寫個日誌

sleep(2)

f.writer(ctime()+

':'+

str(e)

+'\n'

)#e是個物件,需要轉為str

else

: data = c.recv(

1024

)print

(data)

Python Socket 程式設計

client import socket,sys if name main 處理引數 argv sys.argv if len argv 3 or len argv 2 and argv 1 print useage argv 0 sys.exit 0 host argv 1 server ip位址...

python socket程式設計

python 編寫server的步驟 1.第一步是建立socket物件。呼叫socket建構函式。如 socket socket.socket family,type family引數代表位址家族,可為af inet或af unix。af inet家族包括internet位址,af unix家族用於...

python socket程式設計

客戶端 author lenovo fromsocketimport host localhost port 2157 bufsize 1024 addr host,port tcpclient socket af inet,sock stream tcpclient.connect addr wh...