博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过Python脚本理解系统线程
阅读量:6176 次
发布时间:2019-06-21

本文共 1357 字,大约阅读时间需要 4 分钟。

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://uywda.baihongyu.com/

你可能感兴趣的文章
scala匿名函数
查看>>
vlan技术【实现】vlan简介和SVI实现不同vlan间通信
查看>>
scrapy爬虫初步尝试
查看>>
陈松松:视频制作不出来,跟这7个思维有九成关系
查看>>
形参和实参有何区别
查看>>
我的友情链接
查看>>
MySQL表结构的导入和导出MySQL表结构的导入和导出
查看>>
JavaSE 学习参考:Map容器遍历
查看>>
salt模块命令
查看>>
基于TBDS的flume异常问题排查过程
查看>>
2017/5 JavaScript基础7--- 数组
查看>>
网络时常断网的解决办法
查看>>
第八次作业及答案
查看>>
linux 日志定时清理脚本
查看>>
java老司机面试题
查看>>
Guice AOP
查看>>
懒汉式单例
查看>>
java递归组装树形结构
查看>>
手把手教你自己写一个模糊搜索的下拉框
查看>>
.Net文档图像处理工具包GdPicture.NET发布v14.0.30,改进PDF/OCR生成速度
查看>>