Forum: PC-Programmierung Socket ignoriert Broadcasts in 255.255.0.0 Netz


von Ignaz (Gast)


Lesenswert?

Hallo,

ich habe ein Netzwerk Gerät gebaut. Um das zu finden sendet der PC einen 
UDP Broadcast, und das Gerät antwortet mit einem Paket an die 
Absenderadresse.
Funktioniert bestens, solange ich mit einem DHCP Server arbeite. Die 
Netzmaske ist in diesem Fall 255.255.255.0

Wenn ich statt DHCP aber AutoIP verwende, haben PC und Gerät eine 
Adresse im Bereich 169.254.xxx.yyy (also Netzmaske 255.255.0.0). Der 
Broadcast vom PC zum Gerät kommt an, das Gerät antwortet und ich sehe am 
PC mit dem Sniffer auch das korrekte Antwortpaket. Leider wird das Gerät 
aber von meiner Windows Software ignoriert, der Socket empfängt einfach 
nichts. Ich öffne den Socket für den Empfang der Antwortpakete 
folgendermassen:

SOCKET s;
SOCKADDR_IN addr;
memset(&addr,0,sizeof(addr));
addr.sin_family=AF_INET;
addr.sin_port=htons(12345);
addr.sin_addr.s_addr=ADDR_ANY;
rc=bind(s,(SOCKADDR*)&addr, sizeof(SOCKADDR_IN));
FD_ZERO(&readfds);
FD_SET(s, &readfds);
sel = select(0, &readfds, NULL, NULL, NULL);

Warum empfange ich das Antwortpaket nicht, obwohl es ja am PC ankommt?

Danke & Gruß Ignaz

: Verschoben durch Moderator
von Malte S. (maltest)


Lesenswert?

Könnte es sein, dass die Windows-Firewall bei Verwendung von autoip 
strikter ist bzw. die Netzwerkerkennung das Netz dann anders 
klassifiziert hat?
Versuch's mal ohne FW.

von Ignaz (Gast)


Lesenswert?

Bingo!
Danke für den dezenten Wink. Jetzt läuft es wunderbar :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.