python select實現非阻塞socket

2021-09-09 02:51:47 字數 1066 閱讀 7401

python select實現非阻塞socket - 郭猛的個人空間 - 開源中國社群

python select實現非阻塞socket

#!/usr/bin/env python

# -*- encoding: utf-8 -*-

import socket

import select

host = ""

port = 50000

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

s.bind((host,port))

s.listen(5)

print "begin..."

while 1:

infds,outfds,errfds = select.select([s,],,,5)

# 如果infds狀態改變,進行處理,否則不予理會

if len(infds) != 0:

clientsock,clientaddr = s.accept()

infds_c,outfds_c,errfds_c = select.select([clientsock,],,,3)

if len(infds_c) != 0:

buf = clientsock.recv(8196)

if len(buf) != 0:

print (buf)

clientsock.close()

print "clientsock closed"

print "no data coming"

在網路上看到的一篇文章, 介紹python的socket非阻塞式

在原來的**基礎上改了一下,增加了乙個select使用了兩個select,

第乙個select充許多個client來connect,如果過了5秒還沒有client來connect顯示 "no data coming"

第二個select是如果client connect過來, 過了3秒還沒有傳送message則直接close, 不會造成阻塞

python select實現非阻塞socket

python select實現非阻塞socket liukeforever的專欄 部落格頻道 csdn.net 分類 python 2011 10 19 11 08 690人閱讀收藏 舉報 python view plain copy print usr bin env python encodin...

Python select模組簡單理解與使用

select 的機制中提供一fd set的資料結構,實際上是一long型別的陣列,每乙個陣列元素都能與一開啟的檔案控制代碼 不管是socket控制代碼,還是其他檔案或命名管道或裝置控制代碼 建立聯絡,建立聯絡的工作由程式設計師完成,當呼叫select 時,由核心根據io狀態修改fd set的內容,由...

Socket實現非阻塞連線

include include include include pragma comment lib,ws2 32.lib define time out time 20 connect超時時間20秒 void geturl char url socket sockfd struct sockadd...