#!/usr/bin/perl use IO::Socket; use IO::Select; use Data::Dumper; use Net::SMPP; #use warnings; $tt=time(); $host="some_ip"; $port=7661; $smpp = Net::SMPP->new_transceiver($host, port=>$port, system_id => 'test', password => 'test', system_type => 'smpp' # sadsadsdsdsasource_porty => 60001, ) or die; $port=`netstat -an|grep 7661`; #print "$port\n"; if($port=~/tcp\s+\d\s+\d\sxx\.xxx\.xx\.xx:(\d+)\s+xx\.xxx\.xx\.xx:7661.*ESTABLISHED/) { $pt=$1; } $lsn = new IO::Socket::INET(Listen => 2, LocalAddr =>'localhost',LocalPort => $pt); print "\nlistening on port : "; print $lsn->sockport(); print "\n"; $sel = new IO::Select( $lsn ) or die "cant bind"; print "count".$sel->count() or die "cant get count"; print "before while\n\n"; while(1) { print "here\n"; $results = $sel->can_read(0);# or die "cant read"; #print Dumper @results; print "\n****Outside if****"; print "results== $results\n"; if(@results!=undef) { print "\ninside if"; $pdu = $smpp->read_pdu(); $a=$pdu->{source_addr}; $b=$pdu->{destination_addr}; $msg=$pdu->{short_message}; $pay=$pdu->{message_payload}; print "Msg: $a->$b\t$msg\t$pay\n\n"; } else { print "hello"; print $sel->count(); } }