Jeff Abrahamson on 22 Feb 2004 17:28:02 -0000 |
On Sun, Feb 22, 2004 at 11:33:25AM -0500, Jeff Abrahamson wrote: > [31 lines, 153 words, 1040 characters] Top characters: etranodi > > Here's a code snippet. It should receive a UDP packet and then send > it back to the guy it got it from. For brevity in this email, I've > stripped error checking. > > What actually happens is that it receives the UDP packet's contents > just fine, but faddr is not filled in, remaining all zeroes. So the > sendto fails with a bad parameter error. > > I've been googling, gdb'ing, and reading man pages for too long. Any > suggestions on what I mean to do here? > > Thanks. > > > struct sockaddr_in faddr; /* address of remote peer */ > int num_read; > > memset(&faddr, 0, sizeof(faddr)); > num_read = recvfrom(sock, &buf, MAX_MSG_SIZE, 0, > (struct sockaddr *)&faddr, &fromlen); > printf("Server received message: '%s'\n", buf); > > /* Now just send it back to client to show that we can. */ > ret = sendto(sock, &buf, num_read, 0, > (struct sockaddr *)&faddr, sizeof(faddr)); I stopped using threads and the code worked. That is, I removed this from the compile line: `pkg-config --cflags --libs gthread-2.0` I'm glad it works, but I don't understand why it should have mattered. Any clues? -- Jeff Jeff Abrahamson <http://www.purple.com/jeff/> GPG fingerprint: 1A1A BA95 D082 A558 A276 63C6 16BF 8C4C 0D1D AE4B Attachment:
signature.asc
|
|