import socket,select
sk = socket.socket()
sk.bind(("127.0.0.1",8090))
sk.listen(5)
li = [sk,]
while True:
r,w,e = select.select(li,[],[],5)
for obj in r:
if obj == sk:
conn,addr = obj.accept()
print(conn)
li.append(conn)
else:
data=obj.recv(1024).decode("utf8")
print("%s 号客户发来: %s"%(li.index(obj),data))
msg = input(">>>:")
obj.sendall(msg.encode("utf8"))
print("======",r)
import socket
client = socket.socket()
client.connect(("127.0.0.1",8090))
while True:
msg = input(">>>")
client.send(msg.encode("utf8"))
data = client.recv(1024)
print(data.decode("utf8"))
selectors
import selectors,socket
sel = selectors.DefaultSelector()
def accept(sk,mask):
conn,addr = sk.accept()
print("accepted", conn ,"from", addr)
conn.setblocking(False)
sel.register(conn,selectors.EVENT_READ,read)
def read(conn,mask):
try:
data = conn.recv(1024)
if not data:
raise Exception
print("echoing", repr(data), "to", conn)
conn.send(data)
except Exception as e:
print("closing", conn)
sel.unregister(conn)
conn.close()
sk = socket.socket()
sk.bind(("127.0.0.1",8083))
sk.listen(100)
sk.setblocking(False)
sel.register(sk,selectors.EVENT_READ,accept)
while True:
events = sel.select()
for key,mask in events:
callback = key.data
callback(key.fileobj,mask)
import socket
client = socket.socket()
client.connect(("127.0.0.1",8083))
while True:
msg = input(">>>")
client.send(msg.encode("utf8"))
data = client.recv(1024)
print(data.decode("utf8"))