habt ihr eine Idee, warum im folgenden Script beim ersten Paket das ankommt die IP 0.0.0.0 ausgegeben wird?
Ab dem zweiten Durchlauf gibt die Zeile
Code: Alles auswählen
printf("Sender: %s\nDaten: %s\n", inet_ntoa(remoteAddr.sin_addr), datagram);
Habe ich etwas falsch initialisiert?
Vielen Dank
Mandy
Code: Alles auswählen
static void *WarteAufKommando(void* val) {
int rc;
int hostSock;
int remoteSock;
struct sockaddr_in hostAddr;
struct sockaddr_in remoteAddr;
// char *remoteIP = "255.255.255.255";
char datagram[512];
socklen_t remoteLen;
printf("WarteAufKommando gestartet (Adresse val:%p)\n", val);
hostSock = socket(AF_INET, SOCK_DGRAM, 0);
hostAddr.sin_family = AF_INET;
hostAddr.sin_port = htons(PORT_NUMMER);
hostAddr.sin_addr.s_addr = INADDR_ANY;
rc = bind(hostSock, (struct sockaddr *)&hostAddr, sizeof(hostAddr));
while(1)
{
bzero(datagram, 512);
rc = recvfrom(hostSock, datagram, 512, 0, (struct sockaddr *)&remoteAddr, &remoteLen);
datagram[rc] = 0;
printf("Sender: %s\nDaten: %s\n", inet_ntoa(remoteAddr.sin_addr), datagram);
}
printf("Thread wurde beendet\n");
pthread_exit((void *)1);
return NULL;
}