Seite 1 von 1

Einfacher Chat

Verfasst: Samstag 11. Mai 2013, 09:06
von Server7637847
Hi,
wollte mal fragen was man inn Python alles kapieren muss um einen "einfachen" Chat zu programmieren.
Habe ein kleines fake programm geschrieben ohne server also nur mit sich selbst.

Code: Alles auswählen

ja = float(raw_input("Enter IP:"))
if ja == 123:
    print "Your IP is right"
    a = float(raw_input ('Enter security IP:'))
    if a == 321:
        print "You have connected with the server"
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
        str(raw_input('Send:'))
    else:
        print "ERROR404"
        print "please start the app new"
        print "please press enter to close"
        raw_input()        
else:
    print "ERROR404"
    print "please start the app new"
    print "please press enter to close"
    raw_input()


Fragen:
Wie programmiere ich einen Server?
Was brauche ich noch in meinem Chat?

MfG

Re: Einfacher Chat

Verfasst: Samstag 11. Mai 2013, 09:34
von Dami123
Um einen einfachen Chat zu programmieren brauchst du das Modul "socket". Mit diesem kannst du dich z.B. im TCP/IP Netz verbinden.
Wie du dir vorstellen kannst, braucht ein Chat (Verbindung) zwei Personen bzw. Endungen, diese werden Server und Client genannt.

Der Server bekommt die IP vom Start PC und einen beliebigen Port, nun wird er so programmiert, dass er auf eingehende Verbindungen (Client) auf diesem Port horcht. Wenn eine Verbindung eingegangen ist, wartet er auf eine Nachricht oder sendet selber eine Nachricht.

Der Client wird so programmiert, dass er versucht sich mit einem Server in Verbindung zu setzen und dann Nachrichten senden/empfangen kann.

Server/Client Tut:
http://www.kellbot.com/2010/02/tutorial ... in-python/

PS:
Du kannst Server und Client auf dem gleichen PC starten und mit dir selber Chatten.

Re: Einfacher Chat

Verfasst: Samstag 11. Mai 2013, 09:34
von BlackJack
@Server7637847: Erst einmal sollte man die Python-Grundlagen beherrschen. Also die Grunddatentypen, eingebaute Funktionen, Kontrollstrukturen. Wenn man sich den Quelltext anschaut, der absolut sinnfrei zu sein scheint, musst Du da noch ein bischen lernen. Arbeite mal das Tutorial in der Python-Dokumentation durch. Learn Python The Hard Way wird für Programmieranfänger auch oft empfohlen. (Nicht vom Titel verwirren lassen :-))

Für einen Chat musst Du Dich dann in irgend einer Weise mit Kommunikation über das Netz auseinander setzen. Zum Beispiel Socket-Programmierung, die auf den zweiten Blick nicht so einfach ist, wie man vielleicht denkt, weil es einige Fallstricke gibt. Oder mit dem `asynchat`-Modul aus der Standardbibliothek. Oder mit einem RPC-Mechanismus wie XML-RPC, Json-RPC, oder Python Remote Objects (Pyro).

Re: Einfacher Chat

Verfasst: Samstag 11. Mai 2013, 09:47
von BlackJack
@Dami123: Das Tutorial taugt nicht viel. Mal davon abgesehen dass der Autor selber zugibt kein Python-Experte zu sein und sowas hier schreibt:

Code: Alles auswählen

serv.bind((ADDR))    #the double parens are to create a tuple with one element
hat das Client-Programm genau einen der Fehler den Anfänger gerne machen: Es geht davon aus, dass mit einem `recv()`-Aufruf ganz bestimmt alles gesendete gelesen worden ist (solange es die Puffergrösse nicht überschreitet). Damit hat er auch nicht die nötige Ahnung von Socket-Programmierung um ein Tutorial zu schreiben.

Re: Einfacher Chat

Verfasst: Samstag 11. Mai 2013, 14:32
von Dami123
Soweit ich mich erinnere hat mir damals auch nur die Erklärung weitergeholfen.
Funktionierende Socket Beispiele gibt es im Netz genug, nur sind nicht alle Anfänger freundlich erklärt.