I am posting this problem and the solution to spread the news a little about a nasty bug in XP.
PROBLEM I have a Perl (activestate) 5.8.8 script that uses IO::Socket::INET; and opens a broadcast UDP socket. The packets are received successfully by another host running a similar script as long as I run the sending script on windows2000. They fail to arrive when sent by the identical script running on an XP host. A packet sniffer shows that the packets are indeed broadcast but with an incorrect header checksum and therefore the receiving host rejects them at socket level. SOLUTION (Work-around) The packet header sumcheck corruption only occurs when the payload has more than the MTU bytes. Chopping the payload in to chunks that each are shorter than the MTU and sending them separately fixes it. For information the socket is opened in non-blocking mode as follows: use IO::Socket::INET; sub openSock { my $remoteIP="255.255.255.255"; ${$_[0]}=new IO::Socket::INET->new( PeerPort=>$_[1], Proto=>'udp', PeerAddr=>$remoteIP, Broadcast => 1) my $temp = 1; ioctl (${$_[0]}, 0x8004667E, \$temp); # set non-blocking on windoze } -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/