[leicht/mittel]Chat-Messenger

CDW

0
Mitarbeiter
Eingereicht von foxtrot92:

Schreibe einen Chat.
leicht: es können sich alle in einem Channel unterhalten.
wichtig: gleichzeitig Schreiben und Nachrichten bekommen soll möglich sein ;)

mittel: private Nachrichten, ignore/ban für den "Admin", erstellung unterschiedlicher Channels (durch den Admin), privilegierte Nutzer (Moderatoren, die "ban"&Co ausführen können).

GUI ist kein Muss - eine CUI reicht vollkommen.
 
Hi,

Ich habe das ganze mal in Python gemacht(wie immer ;-))

Code:
#!/usr/bin/python
import socket, select, time, thread

host = '127.0.0.1'
port = 6000

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(1)
allClients = []

def connector(s, allClients, sock):
              clientsock, clientaddr = s.accept()
              print "---", clientsock.getpeername(), "connected ---"
              allClients.append(clientsock)
              return

def client_disconect(allClients, clientsock, listIn, listOut, sock):
                  print "---", clientsock.getpeername(), "disconnected ---"
                  sock.close()
                  allClients.remove(sock)
                  listIn.remove(sock)
                  listOut.remove(sock)
                  return

def send_message(data, listOut):
                  print "> %s" % data
                  listOut.remove(sock)
                  for sout in listOut:
                      sout.send(data)

while True:
    listIn, listOut, listTmp = select.select(allClients + [s], allClients, [], 1)
    for sock in listIn:
        if sock is s:
            #Verbinden des clients
            thread.start_new_thread(connector,(s, allClients, sock))
            time.sleep(5)
        else:

Code:
#!/usr/bin/env python

import socket
import thread


ip = raw_input("IP-Adresse: ")
if ip == "":
 ip = "127.0.0.1"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, 6000))
#s.setblocking(0)
username = raw_input("nickname: ")
sep = "~> "


def send_message(username):
 while True:
   nachricht = raw_input("Nachricht: ")
   messengex = username + ": " + nachricht
   str(messengex)
   s.send(messengex)

def rec_message(sep):
 test = True
 while test == True:
  try:
    nachricht2 = s.recv(1024)
    nachricht2 = "\n" + sep + nachricht2 + "\n" + "Nachricht: "
    print  nachricht2
  finally:
    test = False

try:
    thread.start_new_thread(rec_message,(sep,))
    thread.start_new_thread(send_message,(username,))
    while True:
        pass
finally:
    s.close()

Ich hoffe es ist ohne fehler, wenn ihr welche findet sagt bitte bescheid. :wink:

Gruss foxtrot92
 
Zurück
Oben