2011-06-23 12 views
1
--|proxy|--|mux|--|demux|--|proxy|-- 
       -- 
       -- 
       -- 
machineA satellite link machineB 

172.16.1.224 172.16.1.218Perlクライアント/サーバソケット

ご挨拶、私は上記のように設定している

。私は 'mux'を作成しようとしています。基本的には、プロキシからトラフィックを読み取り、それを4本のワイヤーで送信するために分割します。 'demux'は4本の電線を読み取り、トラフィックをプロキシに転送します。

私はPerlで基本的なクライアント/サーバ設定をしています。しかし、私はどのようにプロキシからマルチプレクサへのトラフィックを取得するのか分からないのですか?

server.pl - 172.16.1.218

use IO::Socket; 
$| = 1; 
$socket = new IO::Socket::INET (
    LocalHost => '172.16.1.218', 
    LocalPort => '5000', 
    Proto => 'tcp', 
    Listen => 5, 
    Reuse => 1 
); 
die "Coudn't open socket" unless $socket; 
print "\nTCPServer Waiting for client on port 5000"; 

while(1) 
{ 
     $client_socket = ""; 
     $client_socket = $socket->accept(); 
     $peer_address = $client_socket->peerhost(); 
     $peer_port = $client_socket->peerport(); 

     #print "\n I got a connection from ($peer_address , $peer_port) "; 
     while (1){ 
       $send_data = <STDIN>; 
       $client_socket->send($send_data); 
       $client_socket->recv($recieved_data,10); 
       print $recieved_data;#."\n"; 
       #$client_socket->autoflush(); 
     } 
} 

と上で実行されます:ここで

は私のコードです

client.pl

use IO::Socket; 

$socket = new IO::Socket::INET (
    PeerAddr => '172.16.1.224', 
    PeerPort => 5000, 
    Proto => 'tcp', 
) 
or die "Couldn't connect to Server\n"; 

while (1) { 
     $socket->recv($recv_data,10); 
     print $recv_data."\n"; 
     $send_data = <STDIN>; 
     $socket->send($send_data); 
} 

私はちょっと立ち往生していますコメントをいただければ幸いです。事前に

多くのおかげで、

答えて

2
  • は、サーバーはただ一つの接続を処理しています。接続の配列(@ソケット)を使用する必要があります。
  • ネストした2つの無限ループがあります。内側のものは決して終わらないので、最初の接続にのみ参加します。

これは典型的なチャットサーバーのようですので、Googleで "perl chat server"を検索することをお勧めします。洞察力のための

http://sourceforge.net/projects/perlchat/

+0

ねえ、多くの感謝:ここでは助けになることができるいくつかのソースコードを持っています。 – Eamorr

+0

@Francisco R. –

+0

@Francisco Rにも非常によく答えています。 http://stackoverflow.com/questions/15891134/client-server-2-way-communication-unsuccessful-perl?answertab=投票#tab-top。 多くのありがとう:) –