Seite 1 von 1

Low-Level-Networking

Verfasst: Freitag 16. August 2002, 14:48
von g-sus
Hi erstmal! :D
Ich muss schon sagen, so ein Forum für Python war schwer zu finden *bg*
aber zum Thema:

Ich habe mit Python einen Server programmiert, der eine Verbindung mit einem Client (auch mit Python programmiert) eingehen kann.
Nun will ich aber, dass sich mehrere Clients an dem einen Server verbinden können. Diese sollen dann untereinander kommunizieren können (einfache Strings versenden - ein Instant Messanger sozusagen).
Aber weder schaffe ich es durchs Probieren, noch durchs Nachschlagen(da ich bis jetzt kein Nachschlagewerk mit genau dieser Problemstellung gefunden habe)! :(

Ich hoffe man hat mich verstanden und kann mir helfen! :)

Anbei der Quelltext des Servers:

Code: Alles auswählen

from socket import *
from IM_GUI import *
from thread import *
import threading

class Main:
    def __init__(self):
        self.connection = Connection()
        sWindow = Tkinter.Tk()
        sFrame  = Frame(sWindow,"top")
        sFrameM = Frame(sWindow,"top")
        sFrameB = Frame(sWindow,"bottom")
        sButton = Button(sFrame,"Server starten",lambda x=self: start_new_thread(x.connection.run,(x,)))
        self.sStatus = Text(sFrameM)
        self.sStatus.width("20","5")
        vScroll = Scrollbar(sFrameM,"vertical")
        vScroll.view(self.sStatus.yview)
        hScroll = Scrollbar(sFrameB,"horizontal")
        hScroll.view(self.sStatus.xview)
        self.sStatus.verticalScroll(vScroll.set)
        self.sStatus.horizontalScroll(hScroll.set)

class Connection(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.user = {"00000001":"Server"}
        self.host = "localhost"
        self.port = 12345
    def ears_on(self):
        self.server = socket(AF_INET,SOCK_STREAM)
        self.main.sStatus.add("socket\n")
        self.server.bind((self.host,self.port))
        self.main.sStatus.add("bind\n")
        self.server.listen(1)
        self.main.sStatus.add("listen\n")
    def run(self,main_object):
        self.main = main_object
        self.ears_on()
        x = 1
        self.conn, self.addr = self.server.accept()
        self.main.sStatus.add(self.addr)
        while x!="IM_Sock|exit::1109":
            x = self.listen()
        self.conn.close()
        self.main.sStatus.add("\ngeschlossen\n")
    def listen(self):
        data = self.conn.recv(1024)
        if data != "IM_Sock|exit::1109":
            print data
            try:
                data = self.user[data[-8:]] + ": " + data[:-8] + "\n"
            except:
                data = "KEIN USER!"
        self.conn.send(data)
        return data

if __name__ == "__main__":
    Main()
    Tkinter.mainloop()

Verfasst: Freitag 16. August 2002, 16:39
von piddon
Hallo und willkommen.

Schau dir das mal an, evtl. hilft es dir:

http://py.vaults.ca/parnassus/apyllo.py ... .350949141

Das ist ein Asynchroner Chatserver.

Ebefalls kannst du hier

http://py.vaults.ca/parnassus/

mal nachsehen, ob dort etwas existiert, das dich weiterbringt.

Ich selbst kann dir leider nur mit diesen Links helfen.

Verfasst: Montag 19. August 2002, 07:12
von g-sus
cool!
ich habs zwar noch nicht gelesen, aber jetzt hab ich wenigstens wieder was, was sich zu lesen lohnt :wink:

bigTHX! :D