日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php io select,Python IO多路复用之——select方案服务端和客户端代码【python源码详解】...

發(fā)布時(shí)間:2023/12/10 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php io select,Python IO多路复用之——select方案服务端和客户端代码【python源码详解】... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

準(zhǔn)備文件:

IO.py? 服務(wù)端代碼

tcp_c.py?客戶端代碼

IO.py?代碼:

from select import * #引入 select 模塊

from socket import * #引入 socket 模塊

s = socket() #實(shí)例化一個(gè)socket 對(duì)象

s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #設(shè)置端口可重用

s.bind(('0.0.0.0',8888)) #綁定端口號(hào) 8888

s.listen(5) #設(shè)置監(jiān)聽隊(duì)列

rlist = [s] #設(shè)置讀列表(被動(dòng)列表)

wlist = [] #設(shè)置寫列表(主動(dòng)列表)

xlist = [] #設(shè)置出錯(cuò)列表

while True: #循環(huán)等待客戶端連接

rs,ws,xs = select(rlist, wlist, xlist) #將三個(gè)列表托管給select 對(duì)象

for r in rs: #遍歷 讀列表(收到客戶端請(qǐng)求的對(duì)象)

if r is s: # 如果是 s 套接字對(duì)象接收到請(qǐng)求,則說(shuō)明是新的用戶連接

c,addr = s.accept() #處理客戶端請(qǐng)求,將連接套接字賦值給 c 用戶地址賦值給 addr

print(addr,'連接至s') #打印連接提示信息

rlist.append(c) #將連接套接字添加進(jìn) 讀列表,以便保持持續(xù)的連接

else: #如果不是 s 套接字對(duì)象接收的請(qǐng)求,則說(shuō)明是已有的現(xiàn)成連接

data = r.recv(1024) #接收客戶端傳過(guò)來(lái)的數(shù)據(jù)

if not data:#如果沒(méi)有發(fā)送過(guò)來(lái)任何數(shù)據(jù)

r.close() #將當(dāng)前套接字關(guān)閉

rlist.remove(r) #將當(dāng)前套接字移除出rlist列表,使 select 不再監(jiān)管此對(duì)象

else: #如果有發(fā)送過(guò)來(lái)的數(shù)據(jù)

print(data.decode()) #打印出客戶端發(fā)送過(guò)來(lái)的數(shù)據(jù)

r.send('已收到你的消息'.encode()) #給客戶端回復(fù)數(shù)據(jù)

for w in ws: #遍歷 寫列表(主動(dòng)發(fā)起的列表)? 只要此列表有對(duì)象,會(huì)馬上觸發(fā)

pass #由于基本上用不到這個(gè)列表,所以此處不寫任何代碼

for x in xs: #遍歷 發(fā)生錯(cuò)誤的套接字列表

pass #由于基本上用不到這個(gè)列表,所以此處不寫任何代碼

tcp_c.py代碼:

from socket import *

import time

#創(chuàng)建套接字

sockfd = socket(AF_INET,SOCK_STREAM)

#發(fā)起連接

server_addr = ('127.0.0.1',8888)

sockfd.connect(server_addr)

i = 0

while True:

data = input('發(fā)送>>')

#data = '哈哈'+str(i)

sockfd.send(data.encode())

data = sockfd.recv(1024)

print('接收到:',data.decode(),i)

i += 1

sockfd.close()

運(yùn)行結(jié)果:

總結(jié)

以上是生活随笔為你收集整理的php io select,Python IO多路复用之——select方案服务端和客户端代码【python源码详解】...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。