Sockets: recvfrom bekommt keine Daten!
-
Hallo zusammen
ich habe folgenen Code, um einen UDP Server zu erzeugen:
Auf der Linux Kiste (CentOS 6) hat das bislang immer porima funktioniert, sodass die Funktion "recvfrom" erfolgreich Daten bekommen hat.
Aber seitdem auf diesem Host ein zusätzliches Interfaces "eth1" hinzugekommen ist, bekomme ich über recvfrom keine Daten mehr!
Wenn ich das Interface eth1 wieder runternehme, dann funktioniert es wieder.
Probiert habe ich ebenfalls schon:
servaddr.sin_addr.s_addr = inet_addr("172.22.0.42");In der "netstat -an" Ausgabe sieht das dann wie folgt aus:
udp 0 0 0.0.0.0:6343 0.0.0.0:*
oder eben:
udp 0 0 172.22.0.42:6343 0.0.0.0:*Also jeweils in Ordnung denke ich.
Aber wieso geht es mit zwei Interfaces nicht mehr??Bin für jede Hilfe dankbar
-----------------
int sockfd = socket( AF_INET, SOCK_DGRAM, 0 );
struct sockaddr_in servaddr;
struct sockaddr_storage cliaddr;
bzero( &servaddr, sizeof(servaddr) );
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl( INADDR_ANY );
servaddr.sin_port = htons( 1234 );
bind( sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr) );void *udpPacket = malloc( nBUFFER_LARGE );
socklen_t len= sizeof(cliaddr);
int nBytesRead = recvfrom(sockfd,udpPacket,nBUFFER_LARGE,0,(struct sockaddr *)&cliaddr,&len);
--------------------eth0 Link encap:Ethernet HWaddr 00:50:56:88:00:03
inet addr:172.22.0.42 Bcast:172.22.0.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fe88:3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6311754 errors:0 dropped:0 overruns:0 frame:0
TX packets:101088 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3401134975 (3.1 GiB) TX bytes:31369758 (29.9 MiB)eth1 Link encap:Ethernet HWaddr 00:50:56:88:3D:00
inet addr:10.0.60.34 Bcast:10.0.60.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fe88:3d00/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14528543 errors:0 dropped:0 overruns:0 frame:0
TX packets:642551 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5227618973 (4.8 GiB) TX bytes:63704415 (60.7 MiB)--------------------
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum C (C89 und C99) in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.