ich bin gerade dabei mich in Sockets einzuarbeiten und bin dabei auf ein etwas nerviges Problem gestoßen:
mein Skript funktioniert generell vom Code her, allerdings kommen die Daten je nach Benutzer des Skripts an bzw nicht an.
Ich kann Daten zu einem Freund von mir schicken der genau dasselbe Skript laufen hat und er empfängt die Daten.
Das Programm nimmt die Daten und schickt sie direkt an mich zurück.
Allerdings kommen diese nie bei mir an. Ich hab inzwischen schon diverses ausprobiert von port-forwarding, "exposed-host" und Abschalten aller Firewalls, ohne jeglichen erfolg.
Senden kann jeder den ich das ausprobieren lasse, Empfangen nur manche.
Ich bin relativ Ratlos was des Problem angeht...
Bei der verwendung von udp ist zwar nicht gegeben, dass die Pakete ganz oder in der Richtigen Reihenfolge ankommen aber bei mir kommen einfach konsequent nie welche an.
Code sieht wie folgt aus:
(Ja ich bin mir bewusst, dass manches etwa hingepfuscht ist, daran sollte es allerdings nicht liegen da es generell funktionieren kann)
Code: Alles auswählen
import socket
running = True
print "UDP-test"
print
ip = "127.0.0.1" # hier steht normalerweise die Adresse des empfängers
nachricht = raw_input("Nachricht: ")
while running:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
port = 50026
all_addr = [("",0),("",0),("",0)]
try:
s.bind(("", port))
s.sendto(nachricht, (ip, port))
while running:
daten, addr = s.recvfrom(1024)
print "[%s] port:%s message: %s" % (addr[0],addr[1], daten) #addr[0] enthaelt IP, addr[1] port
for i in range(3):
if (all_addr[i][0] == ""):
all_addr[i] = addr
break
elif(all_addr[i][0] != addr[0]):
s.sendto(daten, (all_addr[i][0], all_addr[i][1]))
if (daten == "exit"):
running = False
s.sendto(daten, (addr[0], addr[1]))
finally:
s.close()
Danke im Voraus
Euer Captain