2012-01-11 2 views
1

、私は、O/Iを行いますので、同様のプロセス、procA、持っている:ホストBにnetcatとfifo経由で2つのリモートプロセスを結ぶには?ホストAで

#!/bin/bash 
while sleep 1 ; do 
    # Consume input *if available* 
    if read -t 0.5 x; then # a timed-read 
    # If input is available, output it. 
    echo "HostA Input: $x" 
    fi 

    # Produce some output. 
    echo "HostA Output: $(date)" 
done 

を、私はprocBは/その入力にタグ付けすることを唯一の違いは、非常に類似したプロセス、procBを持っていますプレフィックス(プレフィックスHostAの代わりに)を使用してください。

は今の標準入力 'procAに標準出力をS'、私はsの標準入力 'procBへの標準出力' procAを送信するためにnetcatをプログラム(/usr/bin/nc)を使用したい、とprocB

[HostB]$ nc -l 4000 

[HostA]$ nc HostB 4000 
:ピア・ツー・ピアチャットの 標準的なncを次のように起こると、このすべての私の期待は、ホストAの出力がホストBに表示されなければならないことである、とホストBの出力は、ホストAに表示されます...ずっと私は次のように、プロセス procAprocBの両方のホストのヒトを置き換えることによって を上記の標準的な例を拡張しようとしたとき

しかし、それは働かなかった

ホストB について:

$ mkfifo p 
$ ./procB <p | nc -l 4000 >p 
<WHY NO OUTPUT HERE??> 

と、ホストA上:

$ mkfifo p 
$ ./procA <p | nc HostB 4000 >p 
<WHY NO OUTPUT HERE??> 

注:

  1. 私は、ポート4000がホストBで開いていることを確認しました。

ホストBの場合:

$ mkfifo p 
$ ./procB <p | nc -l 4000 >p 

ホストA で:

  • 単方向通信は、以下のような、を動作するようです

    $ ./procA | nc HostB 4000 
    HostB Output: Wed Jan 11 13:53:37 IST 2012 
    HostB Output: Wed Jan 11 13:53:39 IST 2012 
    HostB Input: HostA Output: Wed Jan 11 13:55:02 IST 2012 
    HostB Output: Wed Jan 11 13:53:40 IST 2012 
    HostB Input: HostA Output: Wed Jan 11 13:55:04 IST 2012 
    HostB Output: Wed Jan 11 13:53:41 IST 2012 
    HostB Input: HostA Output: Wed Jan 11 13:55:05 IST 2012 
    HostB Output: Wed Jan 11 13:53:42 IST 2012 
    ^C 
    

    今、ncにはncバイナリで有効になっていれば何とか使用することができるINSECUREオプション-eが付属していますが、-eオプションを利用できないと仮定した場合、どのようにしてnc ?基本的に、私はどこに間違っていますか?上記の場所に出力がないのはなぜですか?事前に多くの感謝。

  • 答えて

    関連する問題