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.
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]
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]