> > > Your template is wrong. You need 'x C n a4 x8' (or 'n n a4 x8'). > > Thanks, I will give that a shot. Altough, all of the docs > that i read > > pack the structure with the 'S n C4 x8' template > > Is that in the Perl docs somewhere?
no, they say to use sockaddr_in() of course. docs I found on google and some old cheesy perl book :( > > The first S will only work on big-endian architectures (not i386). > > C4 expects four separate arguments in the range 0-255 for the > address, not a > packed 4-byte string as returned by gethostbyname(). yea, i thought that seemed wrong. > I suspect it "works" only by luck; you're probably using > INADDR_ANY on your > bind() call, right? Is the server big-endian? the server is a Intel P3, same as the client. Little endian. I agree, it shouldn't work, but it does. here is the code: -- $port = 6668; $template = 'S n C4 x8'; $| = 1; socket(MY_SOCKET, AF_INET, SOCK_STREAM, 0) || die "Socket: $!\n"; $addr = (gethostbyname("10.1.101.12"))[4]; $paddr = pack($template,AF_INET,$port,$addr); bind(MY_SOCKET, $paddr) || die "$0: Cannot bind .. $!\n"; --- > Trying to do the pack() is just dangerous, IMO. You might get > it "working", > but have it break on other machines due to endianess, for example. yep, i agree. I learned enough here. Thanks for the help Bob!!! -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]