python网络编程-基于twisted(3)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010255642/article/details/82725572
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Sun Sep 16 15:27:20 2018

@author: myhaspl
@email:[email protected]
server
"""
from twisted.internet.protocol import Factory
from twisted.internet.endpoints import TCP4ServerEndpoint 
from twisted.internet import reactor
from twisted.internet.protocol import Protocol 

class QOTD(Protocol):#协议类
    def connectionMade(self):
        self.transport.write("您好!欢迎您的登录,再见!\r\n") 
        self.transport.loseConnection()

class QOTDFactory(Factory):
    def buildProtocol(self, addr):
        return QOTD()
    
if __name__=="__main__":
    endpoint = TCP4ServerEndpoint(reactor, 21210)
    endpoint.listen(QOTDFactory())
    reactor.run()
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Sun Sep 16 15:28:44 2018

@author: myhaspl
@email:[email protected]
client
"""

from twisted.internet.protocol import Protocol
from twisted.internet.protocol import ClientFactory
from twisted.internet import reactor


HOST="localhost"
PORT=21210
class ClientMessage(Protocol):#协议类
  def connectionMade(self):
    data=raw_input("请输入要发送给服务器的消息")
    self.transport.write(data)
  def dataReceived(self, data):
    print data       
    self.transport.loseConnection()


class ClientMessageFactory(ClientFactory):#工厂类
  def startedConnecting(self, connector):
    print '开始连接'
   
  def buildProtocol(self, addr):
    print '已经连接.'
    return ClientMessage()
   
  def clientConnectionLost(self, connector, reason):
    print '%s==>连接丢失!'%reason
   
  def clientConnectionFailed(self, connector, reason):
    print '%s==>连接错误!'%reason

if __name__=="__main__":
    reactor.connectTCP(HOST, PORT, ClientMessageFactory())
    reactor.run()

客户端

开始连接
已经连接.
请输入要发送给服务器的消息hi
您好!欢迎您的登录,再见!

[Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.ConnectionDone'>: Connection was closed cleanly.
]==>连接丢失!

猜你喜欢

转载自blog.csdn.net/u010255642/article/details/82725572