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()