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()
原文地址:https://www.cnblogs.com/lautung/p/13872390.html