Dafür hab ich die Module Socket und Select benutzt. Geschrieben in 2.7.5
Hier mein Code für den Client:
Code: Alles auswählen
import socket
import select
ip = "hierwahrmalneipyow(ist ein root)"
nickname = "ShuzZzle"
dest = "ME"
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ip, 2327))
while True:
readable, writeable, exceptional = select.select([sock],[],[], 1)
if readable:
data = sock.recv(4096)
nickname = data.split("#")[0]
message = data.split("#")[1]
print "[%s] %s" % (nickname,message)
nachricht = raw_input("Nachricht: ")
sock.send(nickname + "#" + nachricht)
Hier ist noch mein Server-Code:
Code: Alles auswählen
import socket
import select
##In Going Data#####
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("", 2327))
server.listen(1)
### End of In Going Data####
clients = []
Connections = {}
try:
while True:
lesen, schreiben, oob = select.select([server] + clients,
[], [])
for sock in lesen:
if sock is server:
client, addr = server.accept()
clients.append(client)
print "+++ Client %s verbunden" % addr[0]
else:
nachricht = sock.recv(1024)
ip = sock.getpeername()[0]
if nachricht:
Nickname = nachricht.split("#")[0]
#destination = nachricht.split("#")[1]
reply = Nickname + "#" + nachricht.split("#")[1]
print "[%s] %s" % (Nickname, nachricht.split("#")[1])
try:
for irchat in clients:
irchat.send(reply)
print "Data[%s] Sender(%s)" % (reply,irchat)
except:
print "+++ Verbindung zu %s beendet(Err2)" % ip
sock.close()
clients.remove(sock)
else:
print "+++ Verbindung zu %s beendet" % ip
sock.close()
clients.remove(sock)
finally:
for c in clients:
c.close()
server.close()