您的位置:首页 > 编程语言 > Python开发

通过Python脚本理解系统线程

2014-04-18 17:57 399 查看
from socket import *
 HOST='localhost'
#定义主机
ADDR=(HOST,PORT) 
#定义元组

tcpSerSock.listen(1) #监听用户请求

def client(tcpCliSock,num): #定义函数。由于thread强行要求调用的函数必须有两个参数。num只是充数,没有特别含义

    CliSock=tcpCliSock #将传递进来的客户端socket赋值给CliSock

    while True: #定义无限循环

        data=CliSock.recv(BUFSIZ) #从用户socket中读取1024大小数据

        if not data: ##处理用户请求

    print 'con from :',addr <span arial="" narrow',="" arial,="" serif;="" font-size:="" 14px;="" line-height:="" 28px;="" "="" style="padding: 0px; margin: 0px;">#打印客户端信息

    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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息