亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

通過Python腳本理解系統線程

標簽:
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()

©著作权归作者所有:来自51CTO博客作者散居江湖的原创作品,如需转载,请注明出处,否则将追究法律责任

系统Python包


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消