2017-06-19 7 views
0

UDPプロトコル で動作しますが、私はTCPプロトコル 問題 は何で仕事をしたい だ ネットを助けてくださいネットSIPライブラリ は正常です:: ::シンプルなシップperlのネット一口簡易TCPレジスタ

#!/usr/bin/perl 

use IO::Socket::INET; 
use Net::SIP::Leg; 
use Net::SIP::Simple; 

my $ip = "my ip "; 
my $Proto_1 = 'tcp'; 
my $PeerPort_1 =5060; 
my $user= "my user"; 
my $pass = "my password "; 

$legsocket = IO::Socket::INET->new(
    Proto => $Proto_1, 
    PeerAddr => $ip, 
    PeerPort => $PeerPort_1, 
) || die "bad Socket \n"; 

# print "good socket\n"; 

my $legsocket = Net::SIP::Leg->new(sock => $legsocket) 
    || die "bad Leg\n"; 

my $ua = Net::SIP::Simple->new(
    outgoing_proxy => $ip, 
    registrar  => $ip, 
    domain   => $ip, 
    from   => $user, 
    leg   => $legsocket, 
    auth   => [ $user,$pass ] 
); 

$ua->register(expires => 1800) ; # <- Valeur mini chez free 
print $ua->error."\n"; 
if ($ua->register(expires => 1800)) { 
    print "good register"; 
} 

my $err = $ua->error; 
my ($w1,$w2,$w3,$code) = split(" ", $err); 
print "$ip:$PeerPort_1 $code\n"; 
+0

あなたは何を試してみましたか?何が効いていないのですか? – Cristina

+1

私はあなたのコードの書式を簡単にするために修正しました。あなたは歓迎ですが、将来自分でやるために時間をかけてください。多くの人にあなたのコードを読んで理解するように求めているのであれば、できるだけ読みやすいようにするのは間違いありません。 –

+0

あなたのためにあなたのプログラムをデバッグする人はいません。 https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – jdv

答えて

0

多くの問題があります。

  1. あなたは21行で、その後ライン13
  2. でそれを定義せずに$のlegsocketを使用し、あなたはあなたが別のオブジェクト型への$ legsocket-割り当てを再$のlegsocket(なぜ?)
  3. を定義しました。それは誤りではなくむしろ悪い習慣です。
  4. 同じですが、$ ua-> 2回登録しました。ここで

良い実施例である、

#!/usr/bin/perl 
use strict; 
use warnings; 

use IO::Socket::INET; 
use Net::SIP::Leg; 
use Net::SIP::Simple; 

my $domain = "my-sip-domain.de"; 
my $proxy = "127.0.0.1"; 
my $user = "1001"; 
my $pass = "1234"; 
my $app  = "SIP Test Client v1.0"; 

my $proxy_ip = '127.0.0.1'; 
my $proxy_port = 5080; 
my $proxy_proto = 'tcp'; 

my $sock = IO::Socket::INET->new(
    Proto => $proxy_proto, 
    PeerAddr => $proxy_ip, 
    PeerPort => $proxy_port, 
) || die "Unable to open socket connection to SIP Proxy $proxy_proto:$proxy_ip:$proxy_port \n"; 

my $leg = Net::SIP::Leg->new(sock => $sock) 
    || die "Bad or invalid connection to SIP Proxy $proxy_proto:$proxy_ip:$proxy_port \n"; 

# create new agent 
my $ua = Net::SIP::Simple->new(
    outgoing_proxy => $proxy, 
    registrar => $domain, 
    domain => $domain, 
    from => $user, 
    auth => [$user, $pass], 
    leg => $leg, 
); 

# register it 
if(!$ua->register(expires=>300, 'user-agent'=>$app)) { 
    if ($ua->error()) { 
     print "Registration for '$user': ".$ua->error()."\n"; 
     exit; 
    } else { 
     print "Registration for '$user' succeeded.\n"; 
    }; 
}; 

$ua->loop(2); 

# unregister it 
if(!$ua->register(expires=>0, 'user-agent'=>$app)) { 
    if ($ua->error()) { 
     print "De-Registration for '$user': ".$ua->error()."\n"; 
     exit; 
    } else { 
     print "De-Registration for '$user' succeeded.\n"; 
    }; 
};