IO::Socket - Probleme

neo-rs

Grünschnabel
hallo zusammen,

ich habe ein problem mit der socket-verbindung von meinem clien (pc) zu meinem kartenleser (server):

der kartenleser hat ein display worauf ich auch mit dem client schreiben kann - hier antwortet mir auch der server mit "ok" wenn er die nachricht empfangen hat.
lege ich jetzt die chipkarte an das lesegerät, so bleibt die socket verbindung hängen.
lege ich doch zuvor die karte an dem sensor und starte das programm so bekomme ich auch die katennummer übermittelt.

habt ihr eine idee?

Code:
#!/usr/bin/perl
use strict;
use IO::Socket;
 
my $x = 1;
 
my $sock = IO::Socket::INET->new( PeerAddr => '192.168.156.10',
PeerPort => 10001,
Proto => 'tcp' )
or die "konnte verbindung nicht aufbauen: $@\n";
my $answer = "ok";
 
my $message = chr(2) . "T3" . "Schreibe auf Display" . chr(4);
 
print $sock "$message";
 
while($x) 
{
   $x++;
   print "Antwort 1 $answer\n";
   print "sende text\n";
   $message = chr(2) . "T3" . "Schreibe zum $x mal" . chr(4);
   print $sock "$message"; #senden des strings
 
   $answer = <$sock>;
   print "Antwort 2" . $answer . "\n";
   if ($answer =~ m/R09/)
   {
      $message = chr(4);    #sende nachricht empfangen
      print $sock "$message";
      $message = chr(2) . "O210" . chr(4);   #sende akustisches signal
      print $sock "$message";
      print "Karte erkannt\n";
   }
   print $x . "-" . $answer;
 
   sleep 1;
}
 
Sicher, dass der Kartenleser die Antwort mit einem Zeilenumbruch beendet? Ich kenne mich mit Sockets auch nicht so wirklich aus. Da findest Du auf Perl-Community.de schon mehr "Experten"...
 
Zurück