?
Solved

cant use sockets in win32 perl

Posted on 2006-10-24
6
Medium Priority
?
291 Views
Last Modified: 2010-05-18
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?
0
Comment
Question by:jephtah
  • 3
  • 2
6 Comments
 

Author Comment

by:jephtah
ID: 17800441
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
 
LVL 25

Expert Comment

by:clockwatcher
ID: 17800627
You probably have XP SP2 installed and the firewall enabled.
0
 
LVL 18

Accepted Solution

by:
Morcalavin earned 500 total points
ID: 17802840
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
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

 

Author Comment

by:jephtah
ID: 17813750
i do not have the firewall enabled.
0
 

Author Comment

by:jephtah
ID: 17813926
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
 
LVL 18

Expert Comment

by:Morcalavin
ID: 17813954
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

Featured Post

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.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Email validation in proper way is  very important validation required in any web pages. This code is self explainable except that Regular Expression which I used for pattern matching. I originally published as a thread on my website : http://www…
I have been pestered over the years to produce and distribute regular data extracts, and often the request have explicitly requested the data be emailed as an Excel attachement; specifically Excel, as it appears: CSV files confuse (no Red or Green h…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
Six Sigma Control Plans

584 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question