Using O'Reilly's "Learning Perl", have set up a "bare bones" socket
connection between two computers to send a small amount of data from the
"client" to the "server".  (For learning, not for the real world.)

The client sends "are you there" and the server responds with "I am here,
what do you want".

Each side prints the data it receives.

The client correctly displays the received:  "I am here ..."

The server displays junk for the data its received, meaning I haven't
correctly acquired it.

Code snippets from the server and client are in the text attachment.  I'd
appreciate it if someone could point out the error I'm making in the server
code.

Thanks,

Hew

Hewlett M. Pickens
B I Moyle Associates, Inc.


              This is the "server"

use strict;
use IO::Socket;
....
....
#---------------------------------------------------------------------#
# Start a Socket "receptor"                                           #
#---------------------------------------------------------------------#
print "HEWSRV001 - $dateTime Socket Receptor is starting \n";

# From Page 441 of Programming Perl
my $server = IO::Socket::INET->new(LocalPort => $server_port,
                                Type      => SOCK_STREAM,
                                Reuse     => 1,
                                Listen    => 10)
     or die "(Couldn't get a socket on port $server_port: $!\n";
print "HEWSRV002 - Result of IO Socket call:  $server \n\n";
#---------------------------------------------------------------------#
# now wait for something to do                                        #
#---------------------------------------------------------------------#
while ($client = $server->accept())
 {
    $client->autoflush(1);
    print "HEWSRV004 - I have a connection from $client \n";
    $bufferSize = 100;
       # the "->recv" was not in Learning Perl page 441.  Got
       # it from reading doc for IO::Socket
    $dataIn = $client->recv($bufferIn, $bufferSize);
    print "HEWSRV005 - I received this data: $dataIn \n";
    print $client "I am here. What do you want \n";
    print "HEWSRV999 - Data was sent to client\n\n";
 }
....
....
------------------------------------------------------------
Result of contact from the client:

   HEWSRV004 - I have a connection from IO::Socket::INET=GLOB(0x588ef8)
   HEWSRV005 - I received this data: c¬($%^ &#$

   HEWSRV999 - Data was sent to client

The data should be:  "are you there", so I haven't properly acquired it.

------------------------------------------------------------

              This is the "client" Side

use IO::Socket;
use strict;
....
....
# From Page 439-440 of Programming Perl
$socket = IO::Socket::INET->new(PeerAddr => $remote_host,
                          PeerPort => $remote_port,
                          Proto    => "tcp",
                          Type     => SOCK_STREAM)
or die "HEWSTA004 - Connect failed - $remote_host:$remote_port : $@\n";
$socket->autoflush(1);              # flush the buffer immediately
print "HEWSTA005 - Socket created with $remote_host $remote_HostName \n";
print "            $remote_host, Port $remote_port \n";
....
....
print $socket "are you there \n";
print "HEWSTA998 Receiving a reply from Server \n";
my $answer = <$socket>;
if ($answer lt "0") {$answer = "None Received"};
print "HEWSTA997 this is the reply: $answer \n";

....
....

-----------------------------------

Result of contact with the server:
  HEWSTA005 - Socket created with 172.18.2.30 LINUXVM1
            172.18.2.30, Port 1400
  HEWSTA998 Receiving a reply from Server
  HEWSTA997 this is the reply: I am here. What do you want

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to