python客户端程序_python笔记-Twisted 实现简单的服务器客户端程序

Twisted 是一个完全事件驱动的网络框架。它允许你使用和开发完全异步的网络应用程序和协议。Twisted 同时支持许多常见的网络协议,包括SMTP, POP3, IMAP, SSHv2, 和DNS。

Twisted 安装:

到http://twistedmatrix.com/trac/去下载安装。windows可以下载msi格式的安装文件,安装简便。

下面是一个简单的客户端服务器端代码。客户端可以输入date,ls等命令,服务器根据命令返回不同的结果。

服务器部分

# -*- coding: utf-8 -*-

from twisted.internet import protocol, reactor

from time import ctime

import os

PORT = 21567

class TSServProtocol(protocol.Protocol):

def connectionMade(self):

clnt = self.clnt = self.transport.getPeer().host

print '...connected from:', clnt

def dataReceived(self, data):

if data == "date":

self.transport.write('current date is [%s]' % ctime())

elif data == "ls":

dirs = os.listdir(os.getcwd())

list = ''

for d in dirs:

list += str(d)+"\n"

self.transport.write('current list is \n %s' % list)

else:

self.transport.write('Please input the right option')

factory = protocol.Factory()

factory.protocol = TSServProtocol

print 'waiting for connection...'

reactor.listenTCP(PORT, factory)

reactor.run()

客户端部分

# -*- coding: utf-8 -*-

from twisted.internet import protocol, reactor

HOST = 'localhost'

PORT = 21567

class TSClntProtocol(protocol.Protocol):

def sendData(self):

data = raw_input('> ')

if data:

self.transport.write(data)

else:

self.transport.loseConnection()

def connectionMade(self):

print "========option============"

print " [date]:current date"

print " [ls]:dir list"

print "=========================="

self.sendData()

def dataReceived(self, data):

print data

self.sendData()

class TSClntFactory(protocol.ClientFactory):

protocol = TSClntProtocol

clientConnectionLost = clientConnectionFailed = lambda self, connector, reason: reactor.stop()

reactor.connectTCP(HOST, PORT, TSClntFactory())

reactor.run()

运行结果

服务器端:

客户端:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值