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.
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Socket DGRAM server funktioniert nicht

Beitragvon Mad-Marty » Donnerstag 2. Februar 2006, 14:29

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:

Beitragvon modelnine » Donnerstag 2. Februar 2006, 14:43

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

Beitragvon Mad-Marty » Donnerstag 2. Februar 2006, 14:51

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:

Beitragvon modelnine » Donnerstag 2. Februar 2006, 14:53

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

Beitragvon Mad-Marty » Donnerstag 2. Februar 2006, 15:04

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:

Beitragvon modelnine » Donnerstag 2. Februar 2006, 15:26

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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder