要實現類似聊天室的功能 程式碼必須要有非同步的功能 在python當中有好幾個方法可以達成需要的目標, 以前有嘗試過multithread的方式(怎麼用還需要再重新練習) 今天(0911)在網路上看到利用select的function同樣可以達到一樣的目標,而且似乎還有其他的優點! 所以先嘗試了第一個版本(先確定select可以順利執行),完整個程式在後續幾個版本繼續讓它完整!
#encoding=UTF-8
import socket
import select
host=''
port=9009
socket_list=[]
serversock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
serversock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
serversock.bind((host,port))
serversock.listen(10)
socket_list.append(serversock)
while 1:
readytoread,readytowrite,readytoerror = select.select(socket_list,[],[],0)
for sock in readytoread:
if sock == serversock:
clientsock,addr = sock.accept()
socket_list.append(clientsock)
print "client (%s,%s)" % addr
else:
try:
data = sock.recv(4096)
if data:
print data
else:
socket_list.remove(sock)
except:
print "error!"
continue
By Jsy