hallo,
ich wollte mal einen Chat machen aber ich finde im Internet nur ewiglange Programme(ich hasse ewiglange Programme).
Könnt ihr mir ein einfaches Beispiel hier posten?
Es soll eine Server - Client Verbindung sein.
Danke!!
Lokalen commandline chat
-
- User
- Beiträge: 59
- Registriert: Freitag 31. Mai 2013, 21:18
ImmmerEineGuteIdee
|=|=|=|=|=|=|=|
HardwareManager
|=|=|=|=|=|=|=|
HardwareManager
@HardwareManager: ein lokaler commandline chat über das Dateisystem
Code: Alles auswählen
#!/bin/bash
touch chat.txt
tail -f chat.txt &
cat /dev/stdin >>chat.txt
-
- User
- Beiträge: 59
- Registriert: Freitag 31. Mai 2013, 21:18
nein so meine ich das nicht..
Ich meine das es im lokalen netzwerk funzt...
Ich meine das es im lokalen netzwerk funzt...
ImmmerEineGuteIdee
|=|=|=|=|=|=|=|
HardwareManager
|=|=|=|=|=|=|=|
HardwareManager
-
- User
- Beiträge: 59
- Registriert: Freitag 31. Mai 2013, 21:18
Ich habe ein kurzes beispiel weis aber
1. nicht wie es funkt
2. wie man das mit mehreren leuten macht
Danke
1. nicht wie es funkt
2. wie man das mit mehreren leuten macht
Danke
Code: Alles auswählen
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("", 50000))
s.listen(1)
try:
while True:
komm, addr = s.accept()
while True:
data = komm.recv(1024)
if not data:
komm.close()
break
print("[{}] {}".format(addr[0], data.decode()))
nachricht = input("Antwort: ")
komm.send(nachricht.encode())
finally:
s.close()
Code: Alles auswählen
import socket
ip = input("IP-Adresse: ")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, 50000))
try:
while True:
nachricht = input("Nachricht: ")
s.send(nachricht.encode())
antwort = s.recv(1024)
print("[{}] {}".format(ip, antwort.decode()))
finally:
s.close()
ImmmerEineGuteIdee
|=|=|=|=|=|=|=|
HardwareManager
|=|=|=|=|=|=|=|
HardwareManager
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
Kürzer als das geht es kaum. Mit welcher Bibliothek es einfacher geht kann ich keine Empfehlung geben, aber es gibt sicherlich einfacheres als lowlevel socket Programmierung.
Der erste Codeschnipsel öffnet einen Server (Code vor while True) und wartet auf eingehende Nachrichten und gibt diese dann aus und gibt dann die Möglichkeit dem Benutzer über input eine Antwort einzugeben die dann abgesendet wird.
Das zweite Codeschnipsel, verbindet sich mit dem Server (Server muss dazu bereits laufen) und gibt dem Benutzer eine Eingabe Möglichkeit (input) und sendet diese dann an den Server und wartet dann auf eine Antwort (s.recv).
Bei beiden läuft der send und recv Teil in einer while Schleife damit es für immer und ewig so weiter geht.
PS da die Frage gleich als nächstes kommt: Das sollte bei dir ohne Probleme mit Python 3 laufen. Allerdings nur im LAN, sobald etwas wie Router / NAT ins Spiel kommen hast du das Problem das der Port an den PC durchgereicht werden muss. Gleiche Problem welches Spieler haben wenn sie Server auf machen.
Der erste Codeschnipsel öffnet einen Server (Code vor while True) und wartet auf eingehende Nachrichten und gibt diese dann aus und gibt dann die Möglichkeit dem Benutzer über input eine Antwort einzugeben die dann abgesendet wird.
Das zweite Codeschnipsel, verbindet sich mit dem Server (Server muss dazu bereits laufen) und gibt dem Benutzer eine Eingabe Möglichkeit (input) und sendet diese dann an den Server und wartet dann auf eine Antwort (s.recv).
Bei beiden läuft der send und recv Teil in einer while Schleife damit es für immer und ewig so weiter geht.
PS da die Frage gleich als nächstes kommt: Das sollte bei dir ohne Probleme mit Python 3 laufen. Allerdings nur im LAN, sobald etwas wie Router / NAT ins Spiel kommen hast du das Problem das der Port an den PC durchgereicht werden muss. Gleiche Problem welches Spieler haben wenn sie Server auf machen.
-
- User
- Beiträge: 59
- Registriert: Freitag 31. Mai 2013, 21:18
Danke.
Und das mit dem Port kenne ich auch(ich habe einen Server gehostet)
Und das mit dem Port kenne ich auch(ich habe einen Server gehostet)
ImmmerEineGuteIdee
|=|=|=|=|=|=|=|
HardwareManager
|=|=|=|=|=|=|=|
HardwareManager
@HardwareManager: Einfache Chats zu schreiben, ist eben nicht so einfach, dass man das in wenigen Zeilen hinbekommt. Das Ding, das Du da gepostet hast, hat eben nur eine Verbindung, man muß warten, bis der andere etwas gesendet hat, bevor man wieder was schreiben kann, es werden unter umständen nur Teilnachrichten empfangen, so dass der Chat danach total unbrauchbar ist. Das Beispiel ist also kein Chat, sondern nur ein Beispiel, wie man keine Client-Server-Prozess aufbauen sollte.
Und alles in allem erwartet der Nutzer etwas mehr Komfort.
Und alles in allem erwartet der Nutzer etwas mehr Komfort.