Verfasst: Sonntag 14. März 2010, 13:05
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Vor allem weil du noch ein ziemlicher Neuling zu sein scheinst, und es damit nicht nur dir, sondern momentan auch uns sehr schwer machstHyperion hat geschrieben:Hast Du uns eigentlisch schon mal erklärt, wieso Du mit Sockets arbeiten willst? (Du schriebst ja nur, dass Du Dir jede Menge Probleme einhandeln willst - aber wieso nur?)
Code: Alles auswählen
if socket.error(10054):
print "Es hat einer eine Verbindung getrennt."
Ok, Du willst uns nicht antworten.coolerj hat geschrieben:Ok ihr wollt mir nicht helfen sagst doch gleich.
Code: Alles auswählen
try:
# was auch immer Du machst
except socket.error as error:
print error
Code: Alles auswählen
import socket
import shutil
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 "[%s] %s" % (addr[0], data)
array = data.split()
datei = "log.txt";
if array[0] == "/kill":
print "[%s] hat die Funktion 'kill' aufgerufen" % (addr[0])
files = open(datei,"a")
files.write("\n[%s] hat die Funktion 'kill' aufgerufen\n" % (addr[0]))
files.write("[%s]" % (data))
files.close()
if array[0] == "/set":
print "[%s] hat die Funktion 'set' aufgerufen" % (addr[0])
files = open(datei,"a")
files.write("\n[%s] hat die Funktion 'set' aufgerufen\n" % (addr[0]))
files.write("[%s]" % (data))
files.close()
if array[0] == "/move":
print "[%s] hat die Funktion 'move' aufgerufen" % (addr[0])
files = open(datei,"a")
files.write("\n[%s] hat die Funktion 'move' aufgerufen\n" % (addr[0]))
files.write("[%s]" % (data))
files.close()
if array[0] == "/archiv":
shutil.move(datei, "./archiv/%s-log.txt" % (array[1]))
if socket.error(10054):
print "Es hat einer eine Verbindung getrennt."
except socket.error as error:
print error
finally:
s.close()
Code: Alles auswählen
#!/usr/bin/env python
#THIS IS ONLY AN EXAMPLE CODE
# Server
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
host = '' # Auf dem server kann man das leer lassen
#~ port = int(sys.argv[1])
port = 12345
s.bind((host, port))
print "===Server gestartet==="
while True:
data,addr = s.recvfrom(1024)
print "Got data ==>" + data
s.close()
Code: Alles auswählen
#!/usr/bin/env python
#THIS IS ONLY AN EXAMPLE CODE
# Client
import socket
# Socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#~ host = sys.argv[1]
#~ port = int(sys.argv[2])
host = 'localhost'
port = 12345
s.sendto("Client connected",(host, port))
print "====Client gestartet==="
v = ''
t = ''
while True:
input = raw_input("Was soll ich senden? ")
s.sendto(input,(host, port))
s.close()
Code: Alles auswählen
def handle_cmd(filename, sender, data, cmd):
message = u"[{0}] hat die Funktion '{1}' aufgerufen".format(sender, cmd)
with open(filename, "a") as outfile:
outfile.write(message)
outfile.write(u"[{0}]".format(data))
print message
def handle_archiv(filename, sender, data, cmd):
shutil.move(datei, r"./archiv/%s-log.txt".format(data.split()[1]))
def listen():
"""
lagere alle Netzwerkkommunikation hier rein
"""
commands = {
"/kill": handle_cmd,
"/set": handle_cmd,
"/move": handle_cmd,
"/archiv": handle_archiv
}
filename = r"was auch immer"
# Stelle an der sonst diese if-Kaskade auftaucht:
commands[array[0]](filename, addr[0], data, array[0])
# und weiter
Nicht nur das. Du solltest vielleicht noch einmal die Wikipedia-Artikel dazu lesenXXLTomate hat geschrieben:*ich hoff ich habs nicht verwechselt
Hatte ich jetzt auf die schnelle keine lust . hab das mit den sockets vor ein paar jahren mal gemacht und konnte mich nicht mehr ganz dran erinnernEyDu hat geschrieben:Nicht nur das. Du solltest vielleicht noch einmal die Wikipedia-Artikel dazu lesenXXLTomate hat geschrieben:*ich hoff ich habs nicht verwechselt
Nichts für ungut, aber vielleicht sollte man dann lieber nicht posten, denn das was dort steht ist teilweise so falsch, dass man hofft dass das keiner ernst nimmt.XXLTomate hat geschrieben:Hatte ich jetzt auf die schnelle keine lust . hab das mit den sockets vor ein paar jahren mal gemacht und konnte mich nicht mehr ganz dran erinnern
lol was ist daran so falsch?Leonidas hat geschrieben:Nichts für ungut, aber vielleicht sollte man dann lieber nicht posten, denn das was dort steht ist teilweise so falsch, dass man hofft dass das keiner ernst nimmt.XXLTomate hat geschrieben:Hatte ich jetzt auf die schnelle keine lust . hab das mit den sockets vor ein paar jahren mal gemacht und konnte mich nicht mehr ganz dran erinnern
Und schon gar kein `while(1)`Rebecca hat geschrieben:Und benutze bitte kein while 1.
Ja dann könnt ihr das hier ja richtig stellen und nicht nur "is falsch" sagen, so bringt es weder mir noch jemand anderem was.Rebecca hat geschrieben:So ziemlich alles was du ueber TCP und UDP gesagt hast.
Code: Alles auswählen
import socket
import shutil
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 "[%s] %s" % (addr[0], data)
array = data.split()
datei = "log.txt";
if array[0] == "/kill":
print "[%s] hat die Funktion 'kill' aufgerufen" % (addr[0])
files = open(datei,"a")
files.write("\n[%s] hat die Funktion 'kill' aufgerufen\n" % (addr[0]))
files.write("[%s]" % (data))
files.close()
if array[0] == "/set":
print "[%s] hat die Funktion 'set' aufgerufen" % (addr[0])
files = open(datei,"a")
files.write("\n[%s] hat die Funktion 'set' aufgerufen\n" % (addr[0]))
files.write("[%s]" % (data))
files.close()
if array[0] == "/move":
print "[%s] hat die Funktion 'move' aufgerufen" % (addr[0])
files = open(datei,"a")
files.write("\n[%s] hat die Funktion 'move' aufgerufen\n" % (addr[0]))
files.write("[%s]" % (data))
files.close()
if array[0] == "/archiv":
shutil.move(datei, "./archiv/%s-log.txt" % (array[1]))
except socket.error as error:
if socket.error(10054):
print "Es hat einer eine Verbindung getrennt."
finally:
s.close()