1 import socket 2 3 4 def main(): 5 # 创建套接字对象 6 tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 7 8 # 绑定端口 9 tcp_server_socket.bind(("192.168.199.88",7788)) 10 11 # 把套接字变成被动 12 tcp_server_socket.listen(128) 13 14 # 循环目的:等待新客户端 为多个客户端服务 15 while True: 16 print("等待一个新的客户端访问:") 17 # 分发新的套接字服务客户端 18 new_client_socket,client_addr = tcp_server_socket.accept() 19 20 print("一个新的客户端到来:%s" % str(client_addr)) # 因为client_addr是一个元祖 所以要转换成字符串 21 22 # 此时堵塞 23 # 循环目的:为同一个客户端服务多次 24 while True: 25 # 接收客户端发来的请求 26 recv_data = new_client_socket.recv(1024) 27 print("客户端发来请求:%s" % recv_data.decode("gbk")) 28 29 # 如果recv堵塞,那么有2种方式: 30 # 1.客户端发来数据 31 # 2.客户端调用close导致了recv街堵塞 32 if recv_data: 33 # 向客户端发送信息 34 new_client_socket.send("你是谁".encode("gbk")) 35 else: 36 break 37 38 # 关闭套接字 39 new_client_socket.close() 40 print("这次服务完毕。。。。") 41 42 # 如果将监听套接字关闭了,那么会导致 不能再次等待新客户的到来,即xxxx.accept就会失败 43 tcp_server_socket.close() 44 45 46 if __name__ == '__main__': 47 main()