NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

TCP

 

お世話になっております。
早速、質問させていただきます。
2台のPC間で無線LANを介してデータの送受信を行うプログラムを製作するのが目的です。
またその際に通信方式はTCP方式を採用したいと考えています。
そこでサンプルでTCP方式に関するプログラムを見たところ、パッシブとアクティブがありました。
しかし、この2つのプログラムを2台のPCで実効するとエラー63が発生してしまいます。
送信先のIPアドレスも指定して、ポートも同じにしたのにプログラムの実行が行えません。
いまいちサンプルの使用方法、説明が不十分で理解できません。
パッシブとアクティブの使用方法をわかりやすく説明して頂けないでしょうか。
初歩的な質問で申し訳ございません。
宜しくお願いします。

 

0 件の賞賛
メッセージ1/4
3,421件の閲覧回数

簡単そうで、なかなかレスが付きませんね。一緒に考えさせて頂きたいと思います。

 

まず出ているエラーですが、以下の内容で間違いないでしょうか?

 

Error63.jpg

 

 エラーの内容を見ると3つほどポイントがありますね。

 

 1.サーバが実行されているか

 2.ファイアーウォールが邪魔していないか

 (3.VIサーバが有効になっているか)

 

 ここで、3は今回はTCP/IP関数を使用しているので除外します。

 

 2のファイアーウォールは、開発環境であればまずはOFFにした方が間違いありません。開発のためには、多少の犠牲は必要です。(?)

 

 1の「サーバが実行されているか」というのは、サーバ側となるVIが実行されているか、ということです。TCP/IP通信は、サーバとクライアントという関係を理解することが重要です。

 

 サーバは、例えるのならばお店です。お店はお客様(クライアント)が来る前には開いて(実行して)いなければなりません。また、お客様が来るかどうかを監視(リスン)していなければ、せっかく来たお客様を逃してしまいます。

 

 アクティブとパッシブはどちらがサーバか?というと、ブロックダイアグラムを見ると一目瞭然です。ポートをリスンしている、パッシブがサーバになります。ですので先にパッシブを実行しておきます。(パッシブの方のフロントパネルに書いてあるコメントの表現が不自然ですね。。。) 次にアクティブを実行します。

 

 ちなみにまずは同じPCの上で実行してみて、実行できるか確認して頂けますか?最初はそこからだと思います。

 

 よろしくお願いします。

0 件の賞賛
メッセージ2/4
3,369件の閲覧回数

お返答ありがとうございます。

 

高須様に指摘していただいた問題点

 

 1.サーバが実行されているか

 2.ファイアーウォールが邪魔していないか

 

ですが、2番のファイヤーウォールはすでに無効にしていたので大丈夫でした。

 

そして1番のサーバが実行されているかについてですが、同じPCでアクティブ、パッシブ各々のプログラムを実行したところ

 

うまく動作することができました。

 

 

また新たな疑問点なんですけど、アクティブのプログラムにはIPアドレスを指定するコマンドがあるのに、なぜパッシブのプログラムにはコマンドがないのでしょうか。

 

無線LANを介してデータの送受信を行うには、お互いのPCを認識する必要がありそれにはIPアドレスを指定するのが必須だと思うのですが、違うのでしょうか。

 

質問ばかりして申し訳ありません。

 

宜しくお願いします。

0 件の賞賛
メッセージ3/4
3,349件の閲覧回数

この場合パッシブ側はポートをリスンして、アクセスしてきたクライアントのIPアドレスを自動的に取得し接続IDという形で保持します。なので前もってIPアドレスを指定する必要はありません。

 

TCP通信をする前に、双方からpingでお互いに到達できますか?pingは厳密にはTCPとはプロトコルが違うので、ファイアーウォールに引っかからないかも知れませんが、ネットワークが機能しているかを調べる目的で 試してもらえますか?

 

よろしくお願いします。

0 件の賞賛
メッセージ4/4
3,309件の閲覧回数