10-12-2010 06:02 AM
10-14-2010 09:24 AM
簡単そうで、なかなかレスが付きませんね。一緒に考えさせて頂きたいと思います。
まず出ているエラーですが、以下の内容で間違いないでしょうか?
エラーの内容を見ると3つほどポイントがありますね。
1.サーバが実行されているか
2.ファイアーウォールが邪魔していないか
(3.VIサーバが有効になっているか)
ここで、3は今回はTCP/IP関数を使用しているので除外します。
2のファイアーウォールは、開発環境であればまずはOFFにした方が間違いありません。開発のためには、多少の犠牲は必要です。(?)
1の「サーバが実行されているか」というのは、サーバ側となるVIが実行されているか、ということです。TCP/IP通信は、サーバとクライアントという関係を理解することが重要です。
サーバは、例えるのならばお店です。お店はお客様(クライアント)が来る前には開いて(実行して)いなければなりません。また、お客様が来るかどうかを監視(リスン)していなければ、せっかく来たお客様を逃してしまいます。
アクティブとパッシブはどちらがサーバか?というと、ブロックダイアグラムを見ると一目瞭然です。ポートをリスンしている、パッシブがサーバになります。ですので先にパッシブを実行しておきます。(パッシブの方のフロントパネルに書いてあるコメントの表現が不自然ですね。。。) 次にアクティブを実行します。
ちなみにまずは同じPCの上で実行してみて、実行できるか確認して頂けますか?最初はそこからだと思います。
よろしくお願いします。
10-14-2010 09:34 PM
お返答ありがとうございます。
高須様に指摘していただいた問題点
1.サーバが実行されているか
2.ファイアーウォールが邪魔していないか
ですが、2番のファイヤーウォールはすでに無効にしていたので大丈夫でした。
そして1番のサーバが実行されているかについてですが、同じPCでアクティブ、パッシブ各々のプログラムを実行したところ
うまく動作することができました。
また新たな疑問点なんですけど、アクティブのプログラムにはIPアドレスを指定するコマンドがあるのに、なぜパッシブのプログラムにはコマンドがないのでしょうか。
無線LANを介してデータの送受信を行うには、お互いのPCを認識する必要がありそれにはIPアドレスを指定するのが必須だと思うのですが、違うのでしょうか。
質問ばかりして申し訳ありません。
宜しくお願いします。
10-17-2010 04:23 AM
この場合パッシブ側はポートをリスンして、アクセスしてきたクライアントのIPアドレスを自動的に取得し接続IDという形で保持します。なので前もってIPアドレスを指定する必要はありません。
TCP通信をする前に、双方からpingでお互いに到達できますか?pingは厳密にはTCPとはプロトコルが違うので、ファイアーウォールに引っかからないかも知れませんが、ネットワークが機能しているかを調べる目的で 試してもらえますか?
よろしくお願いします。