At 12:53 PM 10/26/2006 -0300, Alejandro Santillan wrote:
>Thanks Rob. I think that my problem is just the terminator character, but on
>the string sent by the server, and not mine.

U should be able to manually telnet to the port and do the transaction by
just typing/pasting the string.  Does that work?  Does the proper response
show up on the screen?


>#1. This failed miserably. The program hanged indefinitely
># @answerfromserver=<$handle>;
>#$answerfromserver=join "",@answerfromserver;
>#print $anserfromserver;

If there was no new line sequence transmitted by the other end then this
would fail.  Remember that <> is the line input operator.  It won't fire
until it sees that new line on the input.  undef'ing $/ might make it work.


>#2. This failed also miserably. The program hanged indefinitely
>#my $byte;
>#    while (sysread($handle, $byte, 1) == 1) {
>#        print $byte;
>#    }

That should have worked, since it's essentially the same as ur try #3.
Maybe declaring binmode on $handle would make a difference.  Perhaps some
unicode strangeness is going on.


>#3. This worked, after several tries when I gess correctly the right length
>of the answer to be 55 bytes!!!
>for($i=0;$i<57;$i++){
>sysread($handle,$byte,1);
>print $byte;
>}

I noticed in ur original code that ur reading and writing to the same
handle.  According to perldoc mixing print's and sysread's on the same
handle is a no-no.  That's because they're using different I/O schemes which
can collide.  Have u tried it with a normal read?  "Conventional wisdom" has
it that sysread's should only be used with syswrite's.  $return = read
$handle, $buffer, 999999; should give u what u want.





--
REMEMBER THE WORLD TRADE CENTER         ---=< WTC 911 >=--
"...ne cede malis"

00000100

_______________________________________________
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to