Sockets
hohumbgdl2003
created: 2006-08-02 20:09:47
Hi, I'm a first time perl user looking for some help. I'm trying to communicate from my PC to a PLC on an ethernet card. I run my script to open a socket (the PLC is constantly talking) and it sits there doing nothing. I'm running a program that monitors the Ethernet port to see if it is talking and there is nothing. I can do this using HyperTerminal and it works fine and I see the communication between the two. I'm sure there is something simple missing. :O(
use IO::Socket;
  
  $sock = new IO::Socket::INET (
                                   PeerAddr => '141.121.85.63',
                                   PeerPort => '64511',
                                   Proto => 'tcp',
                                  Listen => SOMAXCONN,
                                   Reuse => 1,
                                  );
  die "Could not create socket: $!\n" unless $sock;

print $sock

 $new_sock = $sock->accept();
 while(<$new_sock>) {
    print "!99200test@@";
 }
 close($sock);
    
Re: Trying to use a socket to monitor an Ethernet port
created: 2006-08-02 20:25:07

The problem is that you're specifying a PeerAddr (client socket) and Listen (server socket). Drop Listen and accept.

use IO::Socket::INET ();

my $sock = IO::Socket::INET->new(
   Proto    => 'tcp',
   PeerAddr => '141.121.85.63',
   PeerPort => '64511',
)
   or die "Unable to create socket: $!\n";

print while <$sock>;

By the way, when on PerlMonks, please put your code, messages, etc inside of ... tags. Please edit your post to spare a janitor the task.

perlmonks.org content © perlmonks.org and hohumbgdl2003, ikegami

prlmnks.org © 2006 edmund von der burg (eccles & toad)

v 0.03