zoukankan      html  css  js  c++  java
  • python 简单的 TCP 服务端 实现

    import socket
    import threading
    
    
    def recv_msg(new_client_socket, ip_port):
        """
        接收消息 的函数
        :param new_client_socket: socket
        :param ip_port: ip地址元祖
        :return:
        """
        while True:
            recv_data = new_client_socket.recv(1024)
            # 判断是否有消息返回
            if recv_data:
                recv_text = recv_data.decode("gbk")
                print("来自【%s】的消息:%s" % (str(ip_port), recv_text))
            else:
                # 如果断开连接会执行这行代码,此时关闭socket的连接
                new_client_socket.close()
                print("已经断开【%s】的连接" % (str(ip_port)))
                break
    
    
    def main():
        # 创建套接字
        tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 设置地址可复用
        tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
        # 绑定TCP端口
        tcp_server_socket.bind(("", 8888))
        # 设置监听 最多128个连接
        tcp_server_socket.listen(128)
    
        while True:
            new_client_socket, ip_port = tcp_server_socket.accept()
    
            print("新连接:", ip_port)
    
            new_thread = threading.Thread(target=recv_msg, args=(new_client_socket, ip_port))
            # 设置守护线程:在主线程关闭的时候 子线程也会关闭
            new_thread.setDaemon(True)
    
            new_thread.start()
    
    
    # 此代码不被执行的 事实上也不需要被执行 因为服务器不需要被关闭
        tcp_server_socket.close()
    
    
    if __name__ == '__main__':
        main()
    
  • 相关阅读:
    Oracle创建上下文 SYS_CONTEXT
    闪回版本查询
    物化视图创建案例
    Oracle 多租户环境学习路线图
    【Mysql MHA】CentOS7.6+Mysql8.0.16 入坑
    【翻译】--19C Oracle 安装指导
    Docker(3)---常用命令
    Docker(2)---安装(设置镜像加速器)
    Docker(1)---基础概念
    AMQP高级消息队列协议
  • 原文地址:https://www.cnblogs.com/lautung/p/13872390.html
Copyright © 2011-2022 走看看