通过Python脚本理解系统线程
短信预约 -IT技能 免费直播动态提醒
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()
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341