概述
Server部分:
'''
Created on 2018年5月6日
一个时间戳TCP服务器,他使用了twisted.internet类
@author: Administrator
'''
from twisted.internet import protocol,reactor
from time import ctime
from hexinbiancheng.utils.tsTclntEntity import Tserver
PORT = 21567
# ts = Tserver()
# HOST = ts.host
# PORT = ts.port
class TSServProtocol(protocol.Protocol):
def sendData(self):
data = input('> ')
if data:
#print('...sending %s...' % data)
self.transport.write(data.encode())
print('我说: ' + ('[%s] %s' % (ctime(), data)))
else:
self.transport.loseConnection()
# def connectionMade(self):
# data = None
# if not data:
# """发送数据"""
# self.sendData()
#
# """打印连接信息"""
#clnt = self.clnt = self.transport.getPeer().host
#print('Server...connected from :', clnt)
def dataReceived(self, data):
if data:
#data有值
"""处理数据并返回给请求方"""
#self.transport.write(('[%s] %s' % (ctime(), data.decode())).encode())
print('别人说: ' + ('[%s] %s' % (ctime(), data.decode())))
self.sendData()
else:
#data为None
"""发送数据"""
#print('Server' + data.decode())
self.sendData()
class TSClntFactory(protocol.ClientFactory):
protocol = TSServProtocol
clientConnectionLost = clientConnectionFailed =
lambda self, connector, reason: reactor.stop()
"""客户端创建连接协议对象"""
#reactor.connectTCP(HOST, PORT, TSClntFactory())
"""服务端创建连接协议对象"""
factory = protocol.Factory()
factory.protocol = TSServProtocol
print('服务端waiting for connection...')
reactor.listenTCP(PORT, factory)
reactor.run()
Client部分:
'''
Created on 2018年5月6日
这个脚本创建一个TCP客户端,它提示用户输入发送到服务器端的消息,并接收从服务器端返回的添加了时间戳前缀的相同消息,然后将结果展示给用户。
@author: Administrator
'''
from twisted.internet import protocol, reactor
from hexinbiancheng.utils.tsTclntEntity import Tserver
from time import ctime
HOST = '127.0.0.1'
PORT = 21567
# ts = Tserver()
# HOST = ts.host
# PORT = ts.port
class TSClntProtocol(protocol.Protocol):
#全局变量data,用来保存消息
#data = ''
def sendData(self):
data = input('> ')
if data:
#print('...sending %s...' % data)
self.transport.write(data.encode())
print('我说: ' + ('[%s] %s' % (ctime(), data)))
else:
self.transport.loseConnection()
def connectionMade(self):
data = None
if not data:
"""发送数据"""
self.sendData()
"""打印连接信息"""
#clnt = self.clnt = self.transport.getPeer().host
#print('Client...connected from :', clnt)
def dataReceived(self, data):
if data:
#data有值
"""处理数据并返回给请求方"""
#self.transport.write(('[%s] %s' % (ctime(), data.decode())).encode())
#print('Client: ' + data.decode())
print('别人说: ' + ('[%s] %s' % (ctime(), data.decode())))
self.sendData()
else:
#data为None
"""发送数据"""
#print('Server' + data.decode())
self.sendData()
class TSClntFactory(protocol.ClientFactory):
protocol = TSClntProtocol
clientConnectionLost = clientConnectionFailed =
lambda self, connector, reason: reactor.stop()
"""客户端创建连接协议对象"""
reactor.connectTCP(HOST, PORT, TSClntFactory())
# """服务端创建连接协议对象"""
# factory = protocol.Factory()
# factory.protocol = TSClntProtocol
# print('客户端waiting for connection...')
# reactor.listenTCP(PORT, factory)
reactor.run()
最后
以上就是甜甜玫瑰为你收集整理的python核心编程,使用了twisted.internet类创建一个简单的半双工聊天程序的全部内容,希望文章能够帮你解决python核心编程,使用了twisted.internet类创建一个简单的半双工聊天程序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复