?
Solved

Listen to A Port For Data & Print The Data

Posted on 2007-12-03
5
Medium Priority
?
1,037 Views
Last Modified: 2012-05-05
Hi,
Some data is being pushed out on another UNIX server to a specific port. I am trying to put a Perl script together that will capture this data and print it out. So far I have the following;

#!/usr/bin/perl -w
use strict;
use IO::Socket;

my $text = "";
my $port='the_port';
my $svr='the_host';
my $sock = new IO::Socket::INET (
            PeerAddr => $svr,
            PeerPort => $port,
            Proto => 'tcp',
            Type => SOCK_STREAM,
);
die "Could not connect to Port : $!\n" unless $sock;
      binmode $sock;
      $sock->autoflush(1);

print "Listening on $svr $port\n";

while (<$sock>) {
        print;
}
close $sock;

The connect works as I get no error, but nothing is printed. I know data is there so have I misssed something ?
0
Comment
Question by:adlikon
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
5 Comments
 
LVL 39

Expert Comment

by:Adam314
ID: 20397054
If you don't change the input record separator, the <$sock> will wait for the default input record separator (eg: "\n").  If the sending computer doesn't send this, your code will wait forever.

You can change the input record separator with:
$sock->input_record_separator($new_sep);

0
 

Author Comment

by:adlikon
ID: 20401614
Hi, now I get the following error;

"Can't locate auto/IO/Socket/INET/input_recor.al in @INC (@INC contains: /sbcimp/run/pd/cpan/5.8.5-2004.09/lib /usr/perl5/5.00503/sun4-solaris /usr/perl5/5.00503
 /usr/perl5/site_perl/5.005/sun4-solaris /usr/perl5/site_perl/5.005 . /sbcimp/run/pd/cpan/5.8.6-2005.03/lib /sbcimp/run/pd/cpan/5.8.6-2005.03/bin) at ./a.pl lin
e 30"

I have tried including libraries using;

BEGIN {
        use lib qw( /sbcimp/run/pd/cpan/5.8.5-2004.09/lib );
        my @paths = (
                "/sbcimp/run/pd/cpan/5.8.6-2005.03/lib",
                "/sbcimp/run/pd/cpan/5.8.6-2005.03/bin",
            );
            push @INC, @paths
}

I then get the error;

"Can't locate auto/IO/Socket/INET/input_recor.al in @INC (@INC contains: /sbcimp/run/pd/cpan/5.8.5-2004.09/lib /usr/perl5/5.00503/sun4-solaris /usr/perl5/5.00503
 /usr/perl5/site_perl/5.005/sun4-solaris /usr/perl5/site_perl/5.005 . /sbcimp/run/pd/cpan/5.8.6-2005.03/lib /sbcimp/run/pd/cpan/5.8.6-2005.03/bin) at ./a.pl lin
e 30"

I have done a search and can not find "input_recor.al" in any of our library directories which as far as I am aware are all standard. Is this new error a red herring ?


0
 
LVL 39

Accepted Solution

by:
Adam314 earned 1500 total points
ID: 20403414
Sorry, that was a mistake on my part.

Try this instead.  Add this line right after your "use IO::Socket" line
replace $new_sep with whatever input record separator you want to use:
IO::Socket->input_record_separator($new_sep);
0
 

Author Closing Comment

by:adlikon
ID: 31412380
Now that I have rethought my requirment I need to approach this differently, so technically this is not the answer I need anymore but that is not the fault of Adam314. My orginal question is no longer vaild for my needs.
0
 

Expert Comment

by:molikjain
ID: 26033867
can you give me the complete perl code above, so that I know the complete answer at one place.
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

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…
A year or so back I was asked to have a play with MongoDB; within half an hour I had downloaded (http://www.mongodb.org/downloads),  installed and started the daemon, and had a console window open. After an hour or two of playing at the command …
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
Suggested Courses

771 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