import socket
import time
# 处理服务器的请求,创建socket对象。绑定套接字
tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp.bind(("", 8080))
tcp.listen(128)
# 设置套接字为非堵塞的方式
tcp.setblocking(False)
print(tcp)
# 收到数据后建立一个列表
a = list()
# 使其地址不会重用
# 收到接收数据
while True:
time.sleep()
try: # 如果有异常则会报错
new_socket, new_addr = tcp.accept() # 1.返回对象为一个元组 2.如果没有返回对象会报错
except Exception as ret:
print("有异常啦-------没有产生对象")
else:
print("没有产生异常------来了我的对象")
new_socket.setblocking(False) # 新对象不堵塞
a.append(new_socket)
# 打印里边对象,对象为多个,所以用循环语句
for client_socket in a:
# 每个newsocket对象都要接收recv数据
try:
recv_data = client_socket.recv(1024)
except Exception as ret2:
print("没有发送数据来")
print("ret2")
else:
print("-----没有异常------有返回对象但是数据可能还没过来")
print(recv_data)
if recv_data:
# 对方发送来了数据
print("------对方发送来了数据-----")
else:
client_socket.close()
a.remove(client_socket)
print("-----客户端已经关闭-----")
使用网络调试助手充当客户端