cant use sockets in win32 perl

win32 perl 5.8.8

trying to use IO::Sockets to open up a tcp connection, to just do a simple communication between two computers on the same subnet.

first i run the receiver on one computer:

=========================
use IO::Socket;
my $sock = new IO::Socket::INET (
                                 LocalHost => '192.168.1.186',
                                 LocalPort => 9000,
                                 Proto => 'tcp',
                                 Listen => 1,
                                 Reuse => 1,
                                );
die "Could not create socket: $!\n" unless $sock;
   
my $new_sock = $sock->accept();
while(<$new_sock>) {
   print $_;
}
close($sock);
================================

with the intention of running the sender on another computer

================================
 

use IO::Socket;
my $sock = new IO::Socket::INET (
                                 PeerAddr => '192.168.1.183',
                                 PeerPort => 9000,
                                 Proto => 'tcp'
                                );
die "Could not create socket: $!\n" unless $sock;
print $sock "Hello there!\n";

$answer=<$sock>;

close($sock);
 
===============================
   
but the receiver never connects, always dies with a "could not create socket:  Unknown error" message

what am i doing wrong?
jephtahAsked:
Who is Participating?
 
MorcalavinConnect With a Mentor Commented:
Take this out:
LocalHost => '192.168.1.186',

Not defining the localhost will allow the server to listen for incoming calls on the socket from any ip address.
0
 
jephtahAuthor Commented:
if i change both hostnames to "localhost" and do it all on one computer (two terminal windows), it works correctly.

if i change peer address to "www.yahoo.com" and peer port to 80, it sends my little packet to yahoo, and i get back a 'bad html request' answer from them.

i think maybe i dont have my computers set up to accept traffic on the ports correctly or something...   i am behind my company's firewall, but being on the same subnet, it shouldnt matter.  in fact, both computers are physically sharing the same switch port, via a simple hub.  i tried to set ports open on my network settings, but apparently it didnt do what i hoped it would do.





0
 
clockwatcherCommented:
You probably have XP SP2 installed and the firewall enabled.
0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

 
jephtahAuthor Commented:
i do not have the firewall enabled.
0
 
jephtahAuthor Commented:
MORCALAVIN:  

ok, that works, but i dont understand why the LocalHost has to be removed.  all of the examples for IO::Socket specify a LocalHost.  

0
 
MorcalavinCommented:
I'm not entirely sure as I'm not a socket genius, but I had this same problem in a perl socket program and a c# socket program.  Specifying the localip address as your localhost would only allow you, the localhost, to send to the socket.  I guess localhost defines the server your listenting for, not what server you are listening on.  *shrugs*
0
All Courses

From novice to tech pro — start learning today.