it seems coming from wherever you broadcasting, 127.0.0.1. On Mon, 12 Feb 2007, Jerry Geis wrote: > I have a small program that I am broadcasting out on port 36 and > attempting to receive information back. > > Using "tcpdump port 36" I can see 2 devices responding to me > but I get no data. > > The response my program gets is: > > Size IP Address Subnet MAC Address ID > 20 0.0.0.0 0.0.0.0 00-00-00-00-00-00 > > Does someone know what I might not be doing correct? > Running the same program under windows works, running it under wine on linux > works > it just doesnt work on linux. > > I have iptables disabled at this time. > > Thanks for nay suggestions. > > Jerry > ---------------------------- > > tcpdump -x port 36 > ------------------------- > tcpdump: verbose output suppressed, use -v or -vv for full protocol decode > listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes > 08:42:49.286701 IP devcentos64.msgnet.com.36 > 255.255.255.255.36: UDP, > length 20 > 0x0000: 4500 0030 0000 4000 4011 790b c0a8 010a E..0.. at .@.y..... > 0x0010: ffff ffff 0024 0024 001c ca61 4321 3039 .....$.$...aC!09 > 0x0020: 0000 0000 0000 0000 0000 0000 0000 0000 ................ > 08:42:49.286976 IP ecov132.msgnet.com.36 > devcentos64.msgnet.com.36: UDP, > length 20 > 0x0000: 4500 0030 03c2 0000 8011 b2f2 c0a8 01ae E..0............ > 0x0010: c0a8 010a 0024 0024 001c a0e2 4321 3039 .....$.$....C!09 > 0x0020: c0a8 01ae ffff 0000 0001 3cd0 67ff 0001 ..........<.g... > 08:42:49.286990 IP ecov432_testing.msgnet.com.36 > devcentos64.msgnet.com.36: > UDP, length 20 > 0x0000: 4500 0030 091a 0000 8011 ad8f c0a8 01b9 E..0............ > 0x0010: c0a8 010a 0024 0024 001c b581 4321 3039 .....$.$....C!09 > 0x0020: c0a8 01b9 ffff ff00 0001 3cd0 5449 0001 ..........<.TI.. > > My program is: > > int main(int argc, char *argv[]) > { > int error; > int total = 0; > int socket_handle; > > enum { > NMP_PORT = 36, > NMP_MAGIC = 0x4321, > NMP_LIST = 12345, > NMP_SET_IP, > NMP_SET_MASK > }; > > typedef union { > unsigned char b[4]; > uint32_t v; > } IPADDR; > > typedef struct { > unsigned char b[6]; > } MACADDR; > > typedef struct { > unsigned short magic; > unsigned short code; > IPADDR ip; > IPADDR mask; > MACADDR mac; > ushort Deviceid; > } HD_NMP; > > HD_NMP nmp; > > struct sockaddr_in broadcast_address; > > bzero((char *) &broadcast_address, sizeof(broadcast_address)); > broadcast_address.sin_family = AF_INET; > broadcast_address.sin_port = htons(NMP_PORT); > broadcast_address.sin_addr.s_addr = inet_addr("255.255.255.255"); > > socket_handle = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); > if(socket_handle >= 0) > { > int byes = 1; > > fd_set read_set; > > struct timeval tm; > > if(setsockopt(socket_handle, SOL_SOCKET, SO_BROADCAST, &byes, > sizeof(byes)) >= 0) > { > if(bind(socket_handle, (struct sockaddr *) > &broadcast_address, sizeof(broadcast_address)) < 0) > { > printf("bind error\n"); > } > > memset(&nmp, 0, sizeof(nmp)); > nmp.magic = IWord(NMP_MAGIC); > nmp.code = IWord(NMP_LIST); > sendto(socket_handle, &nmp, sizeof(nmp), 0, (struct sockaddr > *) &broadcast_address, sizeof(broadcast_address)); > printf("%-4s %-15s %-15s %-17s %6s\n", "Size", "IP > Address", "Subnet", "MAC Address", "ID"); > while(1) > { > tm.tv_sec = 0; > tm.tv_usec = 500000; > FD_ZERO(&read_set); > FD_SET(socket_handle, &read_set); > error = select(socket_handle + 1, &read_set, NULL, > NULL, &tm); > if(error <= 0) > { > break; > } > else > { > char ip_str[100]; > char mac_str[100]; > char mask_str[100]; > > error = recvfrom(socket_handle, &nmp, > sizeof(nmp), 0, NULL, 0); > > if(error < 0) > { > printf("errno=%d %s\n", errno, > strerror(errno)); > continue; > } > else if(nmp.code != IWord(NMP_LIST)) > { > printf("unknown return\n"); > continue; > } > else > { > sprintf(ip_str, "%d.%d.%d.%d ", > nmp.ip.b[0], nmp.ip.b[1], nmp.ip.b[2], nmp.ip.b[3]); > sprintf(mask_str, "%d.%d.%d.%d ", > nmp.mask.b[0], nmp.mask.b[1], nmp.mask.b[2], nmp.mask.b[3]); > sprintf(mac_str, > "%02X-%02X-%02X-%02X-%02X-%02X", nmp.mac.b[0], nmp.mac.b[1], nmp.mac.b[2], > nmp.mac.b[3], nmp.mac.b[4], nmp.mac.b[5]); > printf(" %2d %-15s %-15s %-15s\n", > error, ip_str, mask_str, mac_str); > > total++; > } > } > } > } > > close(socket_handle); > } > > return(0); > } > > > > _______________________________________________ > CentOS mailing list > CentOS at centos.org > http://lists.centos.org/mailman/listinfo/centos >