Jeg skulle gjerne ha tatt vare på en sockaddr_in som jeg mottar i en recvfrom().
Slik har jeg det nå:
Del 1:
del2:
Del 1 og Del2 kjører i forskjellige tråder.
Det som ser ut til å skje, er at i recive-tråden min så er inet_ntoa(spiller[nextPlayer].nett.sin_addr) Lik den riktige ipadressen, den fikk pakke fra. Men når jeg i den andre tråden skal sende svar tilbake, så er inet_ntoa(spiller[nextPlayer].nett.sin_addr) lik 205.205.205.205 uansett.
Det hele virker som om sockaddr_in'n som jeg mottar ikke blir tatt vare på.
Noen tips på en evt løsning? (Har kansje troen på at det er noe med pekeren til sockaddr_in'n som blir mottatt, men har prøvd å memcpy'e structen inn til en annen peker (som har allokert nok minne-plass))
Slik har jeg det nå:
Del 1:
Kode
int bytes = recvfrom(socketd,(char *)&tp, ts, 0, (SOCKADDR *)&temp_addr, &addr_len); spiller[nextPlayer].nett = temp_addr; // der spiller[nextPlayer].nett er av typen sockaddr_in
Kode
for(int i = 1; i<nextPlayer; i++) { sendto(socketd, (char *)&tp, sizeof(tp), 0, (SOCKADDR *)&spiller[nextPlayer].nett, sizeof(spiller[nextPlayer].nett)); }
Det som ser ut til å skje, er at i recive-tråden min så er inet_ntoa(spiller[nextPlayer].nett.sin_addr) Lik den riktige ipadressen, den fikk pakke fra. Men når jeg i den andre tråden skal sende svar tilbake, så er inet_ntoa(spiller[nextPlayer].nett.sin_addr) lik 205.205.205.205 uansett.
Det hele virker som om sockaddr_in'n som jeg mottar ikke blir tatt vare på.
Noen tips på en evt løsning? (Har kansje troen på at det er noe med pekeren til sockaddr_in'n som blir mottatt, men har prøvd å memcpy'e structen inn til en annen peker (som har allokert nok minne-plass))