Seite 1 von 1

Socket DGRAM server funktioniert nicht

Verfasst: Donnerstag 2. Februar 2006, 14:29
von Mad-Marty
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

Verfasst: Donnerstag 2. Februar 2006, 14:43
von modelnine
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.

Verfasst: Donnerstag 2. Februar 2006, 14:51
von Mad-Marty
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

Verfasst: Donnerstag 2. Februar 2006, 14:53
von modelnine
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.

Verfasst: Donnerstag 2. Februar 2006, 15:04
von Mad-Marty
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.

Verfasst: Donnerstag 2. Februar 2006, 15:26
von modelnine
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.