python基于多线程的TCP多任务服务器实例
import socket
import threading
def recv_msg(new_socket):
while True:
# 阻塞的接收数据
recv_data = new_socket.recv(1024)
if recv_data:
# 接到的值decode
recv_txt = recv_data.decode('gbk')
print(recv_txt) # 这个便是接到的数据值
else:
# 当没有数据的时候就跳出循环,退出接收状态
break
# 关闭连接
new_socket.close()
if __name__ == "__main__":
# 开启socket套接字
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 设置地址可以重用
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# 绑定7788端口
tcp_server_socket.bind(("", 7788))
# 主动模式调整为被动模式,监听连接数最大为128
tcp_server_socket.listen(128)
while True:
# 接收客户端连接
new_socker, ip_post = tcp_server_socket.accept()
print(ip_post) # 查看连接过来的客户端IP和端口
# 开启线程
t1 = threading.Thread(target=recv_msg, args=(new_socker,))
#设置线程守护
t1.setDaemon(True)
t1.start()
# 将不再收到新的请求
tcp_server_socket.close()
根据学习资料整合代码