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()
    
  • 相关阅读:
    面向对象的相关知识
    模块的导入
    正怎表达式在爬虫里的应用
    前端~css
    CSS知识点
    初识Html
    Python之路--协程/IO多路复用
    进程
    锁 和 线程池
    操作系统-并发-线程-进程
  • 原文地址:https://www.cnblogs.com/lautung/p/13872390.html
Copyright © 2011-2022 走看看