Socket DGRAM server funktioniert nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Hallo,

ich versuche einen server zum funktionieren zu kriegen via udp.

Leider funktioniert das nicht, bzw, ich sehe nix ankommen auf dem anderen Rechner.


Der "Server" :

Code: Alles auswählen

HOST = 'localhost' 
PORT = 1063  
self.server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.server.bind((HOST, PORT))
while 1:
    data, address = self.server.recvfrom(1024)
    print data, address
Der Client:

Code: Alles auswählen

myconn = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
myconn.connect (('10.10.0.1', 1063))
myconn.send("hello")

EDIT : Tupel vergessen, thx @ modelnine
Zuletzt geändert von Mad-Marty am Donnerstag 2. Februar 2006, 14:52, insgesamt 1-mal geändert.
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Kann auch schlecht, localhost != 10.10.0.1. Der Server hört auf 127.0.0.1, Du schickst das Datagramm aber an eine andere Stelle. Sonst sollte das tun.

Unabhängig davon: in Deinem Client übergibst Du kein Address-Tupel (also ("host",port)), sondern zwei Parameter. Das sollte allein schon aufgrund der Methodendefinition von connect nicht gehen.

--- Heiko.
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Hallo Heiko,

es sind 2 rechner, und der rechner auf dem ich den "server" starte, hat die ip 10.10.0.1.

Er hat aber auch 2 NICs ... falls das zu problemen führen kann.

das mit dem Tuple ist ein schreibfehler hier gewesen
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Dann mußt Du den Server entweder an die "ANY"-Adresse binden, damit er auf jedem Interface hört, aber auch auf dem Interface was der Client sehen kann. An localhost binden wird auf keinen Fall funktionieren, weil dann das Paket vom Client eben von diesem Interface kommen muß.

Probier einfach mal im Server das "localhost" durch "10.10.0.1" zu ersetzen.

--- Heiko.
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Super, danke, funktioniert mit der ip.

Wenn ich meine eigene ip nicht kenne, habe ich gerade herausgefunden, funktioniert auch ein leerer string als host, also "".

das ist dann sicher das any was du meinst :-)


Danke nochmal.
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Wenn ich meine eigene ip nicht kenne, habe ich gerade herausgefunden, funktioniert auch ein leerer string als host, also "".

das ist dann sicher das any was du meinst
Jupp. ;-) Wenn Du in C programmierst ist das INADDR_ANY, deswegen sag ich immer "ANY" dazu.

--- Heiko.
Antworten