天天看點

twisted:基于python的twisted架構編寫一個用戶端和服務端的對話聊天空間

輸出結果

更新中

實作代碼

#基于python的twisted架構編寫一個簡單的聊天室

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

from twisted.internet.protocol import Factory

from twisted.protocols.basic import LineReceiver

from twisted.internet import reactor

user = {}

class ChatReci(LineReceiver):             #定義一個類,這裡繼承的是LineReceiver

   def __init__(self):                    #初始化2個變量

       self.name = ''

       self.state = "game"

   def connectionMade(self):                     #連接配接協定,當用戶端連接配接即發出消息

       self.sendLine("input you  name?")

   def lineReceived(self, data):                 #這個函數定義了取名 列印歡迎界面,以及發送資訊給連上來的使用者

       if self.name == '':                       #判斷名字是否為空  如果為空就進行下面的操作

           self.name = data                       #給self.name指派

           self.sendLine("you welcome, %s!" % (self.name))       #列印歡迎資訊

           user[self.name] = self                 #指派給user

           print ('%s loging' %data)              #列印登入資訊

       else:                                       #不為空就列印資訊

           message = "<%s> %s" % (self.name, data)   #定義聊天資訊

           for ur,protocol in user.items():          #取他的使用者名

               if protocol != user:                   #判斷他是不是一個使用者 如果不是就傳送消息

                   protocol.sendLine(message)         #傳送消息

factory = Factory()              #定義工廠

factory.protocol = ChatReci      #綁定我的類

reactor.listenTCP(8000, factory)   #綁定端口和工廠

reactor.run()                            #啟動