Pychat 1.1 -- Server

Stato
Discussione chiusa ad ulteriori risposte.

!R~

Utente Silver
22 Maggio 2009
0
0
0
55
Con quel poco e niente che so riguardo Twisted ho implementato un server asincorono che accetta connessioni da più client, permettendo a questi di comunicare tra loro.
Codice:
from twisted.protocols.basic import LineOnlyReceiver
from twisted.internet  import reactor
from twisted.internet.protocol import ServerFactory


class ChatConnection(LineOnlyReceiver):

    def name(self):
       self.nick = self.transport.getPeer().host
       return self.nick

    def connectionMade(self):
        print "New connection from " + self.name()
        self.sendLine("Type /NICK (your nick) to change your nick")
        self.factory.send_to_all(self.name() + " has joined the conversation")
        self.factory.clientlist.append(self)

    def connectionLost(self, reason):
       self.factory.send_to_all(self.name() + " has lost the connection")
       self.factory.clientlist.remove(self)

    def lineReceived(self, line):
        if line[:5] == "/NICK":
            self.factory.send_to_all(self.name() + " has changed his name in " + line[6:])
            self.name = line[5:].strip
        else:
            self.factory.send_to_all(self.name() + ": " + line)

    def sendLine(self, line):
        self.transport.write(line + "\n")


class Chat(ServerFactory):

    protocol = ChatConnection

    def __init__(self):
        self.clientlist = []

    def send_to_all(self, mex):
        for host in self.clientlist:
            host.sendLine(mex)


print "Waiting connection from clients..."
main = Chat()
reactor.listenTCP(8080, main)
reactor.run()

Il client più adatto mi sembra proprio telnet, basta mettere in ascolto il server e dare un semplice telnet open host 8080. Naturalmente vanno bene anche altri client, ma non quello della 1.0.

Commenti ben accetti come al solito.
[ot]Malex, non dirmi di passare a 3.0 LOL[/ot]
 
Cosa hai letto sulle Twisted? Comunque buon codice, mi fa piacere vedere che io e Malex non siamo i soli deficienti ad usare Python e specialmente che io non sono il solo che ha ancora il 2.x xD
 
Twisted Networking Programming Essential, ma dicono che anche la doc ufficiale sia ottima.
mi fa piacere vedere che io e Malex non siamo i soli deficienti ad usare Python e specialmente che io non sono il solo che ha ancora il 2.x xD
Lol.
 
R, nn ti dico mai di passare a 3.0, ma a 3.1 casomai XD

opocaj ha detto:
mi fa piacere vedere che io e Malex non siamo i soli deficienti ad usare Python e specialmente che io non sono il solo che ha ancora il 2.x xD

LOL, voi due dovete convertirvi, alla fine per noi esseri normali cambia solo il print :asd:

e cmq tranquillo opo, c'è altra gente che lo usa, anche se nn posta in genere (tipo Chuzz e sydarex, per citare i primi 2 che mi vengono in mente XD)
 
Povero Bronsa, sempre sulla bocca di tutti :-(

opocaj, l'avevo scovato da qualche parte, ma poi formattai e come uno scemo non lo salvai da nessuna parte. Ora sto mettendo sotto sopra google :D
 
opocaj ha detto:
!R~ ha detto:
Twisted Networking Programming Essential
[ot]EDIT ORAKOOL: io non ho sentito niente eh?[/ot]
@ Malex: stavolta ha ragione lepa, il 3.x è gay come bronsa...

lepa? che c'entra lepa?

ah, poi nn lamentatevi quando il 2.X si fanculizzerà, però...

kelev: osi paragonare il vb a python? vai via, va
 
Quando il 2.x si fanculizzerà, saremo costretti, con tanto, ma tanto dispiacere a passare a 3.x :D

Secondo me non regna ..è orrendo come linguaggio il python preferisco il vb
:pattmg:

E comunque non hai ancora commentato il codice Malex :p
 
Stato
Discussione chiusa ad ulteriori risposte.