zoukankan      html  css  js  c++  java
  • Python中的Tcp协议应用之TCP服务端-线程版

    利用线程实现,一个服务端同时服务多个客户端的需求。

    TCP服务端-线程版代码实现:

     1 import socket
     2 import threading
     3 
     4 
     5 def handle_client_socket(new_socket, ip_port):
     6     print("建立连接成功:", ip_port)
     7     while True:
     8         # 8.使用新的套接字发送数据
     9         send_data = "你好,我是服务端。"
    10         send_data_encode = send_data.encode("gbk")
    11         new_socket.send(send_data_encode)
    12         # 7.使用新的套接字接收数据,并设置最大数据接收长度为1024
    13         recv_data = new_socket.recv(1024)
    14         if recv_data:
    15             recv_data_decode = recv_data.decode("gbk")
    16             print("服务端接收的数据为:", recv_data_decode)
    17         else:
    18             print("客户端下线了", ip_port)
    19             break
    20     # 9.关闭套接字
    21     # 与客户端断开通信
    22     new_socket.close()
    23 
    24 
    25 # 1.导入模块
    26 if __name__ == '__main__':
    27     # 2.创建套接字对象
    28     tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    29 
    30     # 3.设置端口复用
    31     tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
    32 
    33     # 4.绑定端口
    34     tcp_server_socket.bind(("", 9090))
    35 
    36     # 5.设置监听,并设置最大等待连接数为128
    37     tcp_server_socket.listen(128)
    38     while True:
    39         # 6.等待客户端建立连接,并接收accpet()返回的新的套接字对象,和客户端IP+端口号
    40         new_socket, ip_port = tcp_server_socket.accept()
    41         socket_thread = threading.Thread(target=handle_client_socket, args=(new_socket, ip_port), daemon=True)
    42         socket_thread.start()
    43 
    44     # 停止服务端服务
    45     # tcp_server_socket.close()
    该花的钱要花,该吃的饭要吃。
  • 相关阅读:
    HDOJ-1106
    二进制神题--一千个苹果问题
    HDOJ-2160
    HDOJ-2058
    HDOJ-2045
    HDOJ-2034
    HDOJ-2054
    HDOJ-2036
    F
    B
  • 原文地址:https://www.cnblogs.com/chao666/p/12002166.html
Copyright © 2011-2022 走看看