实现服务端依次为顾客提供服务
服务端:为顾客提供服务
顾客可能是多位一起来接受服务,服务端同时服务多名客户,利用并发编程实现。
为了易于理解、快速入门,我先从实现服务端轮流为多位顾客提供服务开始做起。
代码演示
服务端代码:
在链接客户端和通信循环为加上一层循环即可
import socket
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
phone.bind(("127.0.0.1",8080))
phone.listen(5)
print("starting...")
# 创建链接循环
while True:
# 和客户建立链接
conn,client_addr = phone.accept()
print(client_addr)
# 通信循环
while True:
data = conn.recv(1024)
if not data:break
print("客户端的数据",data)
conn.send(data.upper())
conn.close() # 服务完一位顾客后关闭和他的连接。
phone.close() # 但是手机不能关机。
多个客户端代码一致(模拟多位客户)
import socket
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.connect(("127.0.0.1",8080))
while True:
msg = input(">>:").strip()
if not msg:continue
phone.send(msg.encode("utf-8"))
print("has send")
data=phone.recv(1024)
print("has recv")
print(data.decode("utf-8"))
phone.close()
(1)我们运行服务端——>运行客户端1——>运行客户端2:
客户端1发送数据abc给服务端,收到了服务端的回应ABC
(2) 同时利用客户端2给服务端发消息def,显示消息已经发送,但是还没有回应,因为服务端已经链接了客户端1,客户端2现在正在排队。
(3)停止运行客户端1,客户端2立即收到了服务端的回应(客户2已经排上队接受服务了)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/122903.html