zoukankan      html  css  js  c++  java
  • 通过Python脚本理解系统线程

    from socket import * #导入socket包中的所有内容
    from time import ctime #导入time包,同时在本地可使用ctime进行调用
    import thread #导入Python线程包
     
    HOST='localhost'#定义主机
    PORT=21567#定义端口
    BUFSIZ=1024 #定义缓冲区
    ADDR=(HOST,PORT) #定义元组
     
    tcpSerSock=socket(AF_INET,SOCK_STREAM)  #生成socket
    tcpSerSock.bind(ADDR) #将地址及端口元组与socket绑定
    tcpSerSock.listen(1) #监听用户请求
     
    def client(tcpCliSock,num): #定义函数。由于thread强行要求调用的函数必须有两个参数。num只是充数,没有特别含义
        CliSock=tcpCliSock #将传递进来的客户端socket赋值给CliSock
        while True: #定义无限循环
            data=CliSock.recv(BUFSIZ) #从用户socket中读取1024大小数据
            if not data: #如果客户端没有任何输入,即直接回车或Ctrl+D
                break #跳出无限循环
            CliSock.send('[%s] %s' %(ctime(),data)) #返回用户输入并附加当前系统时间
        sys.exit #结束进程
     
    while True: #定义无限循环
        print "waiting ...." #打印等待用户输入时的waiting
        tcpCliSock,addr=tcpSerSock.accept() #处理用户请求
        print 'con from :',addr #打印客户端信息
        thread.start_new_thread(client,(tcpCliSock,1))    #在Python中使用线程就靠这句了!Python会开始一个新的线程来运行client函数并以元组的形式传递给这个函数参数!
     
    tcpSerSock.close() #这句依然不会执行!
    threading是官方推荐编写线程使用的模块。还是有必要了解thread的,不仅可以让我们更加了解系统线程的运行方式,也能找到thread与threading及Queue之间的区别,进而更好的学习掌握threading!
     
    下面是Python客户端程序。如果你可以使用telnet进行测试,那么以下内容可以忽略。
    from socket import *
     
    HOST='localhost'
    PORT=21567
    BUFSIZ=1024
    ADDR=(HOST,PORT)
     
    tcpCliSock=socket(AF_INET,SOCK_STREAM)
    tcpCliSock.connect(ADDR)
     
    while True:
        data=raw_input("> ")
        if not data:
            break
        tcpCliSock.send(data)
        data=tcpCliSock.recv(BUFSIZ)
        if not data:
            break
        print data
     
    tcpCliSock.close()

    原文地址:http://president.blog.51cto.com/4990508/1081542

  • 相关阅读:
    类数据源Visual C++对ODBC数据库资源的访问
    变量对话框MFC 关于控件变量的使用
    S3C2440上LCD驱动(FrameBuffer)实例开发讲解(二)
    设备内存缓冲区和 /proc/iomem
    multiplexed pins
    电脑硬件资源有冲突怎么处理?
    redhat open source university 硬件资源
    深入理解linux系统下proc文件系统内容
    S3C2440上LCD驱动(FrameBuffer)实例开发讲解(一)
    Framebuffer文章收集
  • 原文地址:https://www.cnblogs.com/eastson/p/2824100.html
Copyright © 2011-2022 走看看