UDP-Broadcast ignoriert

Post Reply
Message
Author
tengelmen
Posts: 2
Joined: 10. Jun 2002 9:22

UDP-Broadcast ignoriert

#1 Post by tengelmen »

Meine selbstgeschriebenen Socket-Anwendungen ignorieren grundsätzlich Broadcasts an die Broadcast-Adresse des Netzwerks.
Am Sender kanns nicht liegen, die Windows-Pendants erkennen die Pakete.
Irgendwelche Ideen?

Thx
Marcus

abto
Posts: 23
Joined: 30. Mar 2002 1:41

Re: UDP-Broadcast ignoriert

#2 Post by abto »

Zeig mal die Quellcode-Fragmente für die Socket verbindungen...

tengelmen
Posts: 2
Joined: 10. Jun 2002 9:22

Re: UDP-Broadcast ignoriert

#3 Post by tengelmen »

Socket öffnen:

...
struct sockaddr_in in_addr;
sock=socket(AF_INET, type, 0);
if (sock<0){
printf("Error opening socket");
exit(-1);
}
in_addr.sin_family=AF_INET;
in_addr.sin_port= htons(port);
in_addr.sin_addr.s_addr=inet_addr(ipAddress);
memset(&(in_addr.sin_zero),'\0',8);
if ((result=bind(sock, &in_addr, sizeof(struct sockaddr)))<0){
printf("Error binding socket");
exit(-1);
}
...

- Datagram lesen

...
struct sockaddr_in source_addr;
source_addr.sin_family=AF_INET;
source_addr.sin_port=7200;
target= sizeof(struct sockaddr_in);
bufferLength=recvfrom(socket,buffer,65535,0, &source_addr, &target);
...

abto
Posts: 23
Joined: 30. Mar 2002 1:41

Re: UDP-Broadcast ignoriert

#4 Post by abto »

> Socket öffnen:
>
> ...
> struct sockaddr_in in_addr;
> sock=socket(AF_INET, type, 0);
ich geh mal davon aus in type steht SOCK_DGRAM

> if (sock<0){
> printf("Error opening socket");
> exit(-1);
> }
> in_addr.sin_family=AF_INET;
> in_addr.sin_port= htons(port);
ist port = 7200 ?

> in_addr.sin_addr.s_addr=inet_addr(ipAddress);
müsste meiner Ansicht heißen:
in_addr.sin_addr.s_addr=INADDR_ANY;
(liest dann auf allen der Maschine zugehörigen Adressen)

> memset(&(in_addr.sin_zero),'\0',8);
> if ((result=bind(sock, &in_addr, sizeof(struct sockaddr)))<0){
> printf("Error binding socket");
> exit(-1);
> }
> ...
>
> - Datagram lesen
>
> ...
> struct sockaddr_in source_addr;
> source_addr.sin_family=AF_INET;
> source_addr.sin_port=7200;
versuchs mit
source_addr.sin_port=htons(7200);

> target= sizeof(struct sockaddr_in);
> bufferLength=recvfrom(socket,buffer,65535,0, &source_addr, &target);
> ...

Gruß Oliver

Post Reply