BZ易风

导航

 
 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()

 

posted on 2019-08-19 11:02  BZ易风  阅读(409)  评论(0编辑  收藏  举报