- ベストアンサー
TCP/IPで2台のコンピュータで文字列を送受信する
こんにちは。 コンピュータAとコンピューターBをクロス・イーサネットケーブルで接続し、固定IP(私の場合は192.168.0.11と192.168.0.12を使用しています)を割り振りました。 ここでTelnetやTeraTeamで接続して、文字列を送受信したいのですが、TeraTeamでTCP/IPを選択し相手のパソコンのIPを打ち込んで接続しようとすると、"Connection Refused"と出てきて接続できません。どうすればTCP/IPで文字列を送受信できるようになるのでしょうか? 追記A: コンピュータAとコンピュータBのCOMポートをDB9・クロスケーブルで接続し、TeraTeamを走らせてコンピュータAのキーボードを"ABCD"と打つと、コンピュータBのTeraTeamには"ABCD"と表示されますが、丁度それをイーサネット接続でやりたいのです。 追記B: 結局最終的に何をやりたいかを大まかに言いますと、コンピュータAがコンピュータBからTCP/IPで数値を受け取り、コンピュータA内で計算をしてその結果をコンピュータBに送り返すようなアプリケーションをコンピュータA・Bで作りたいのです。なぜCOM接続ではいけないかといいますと、これをローカルLANネットワークで展開したいからです。 追記C: コマンドプロンプトでPINGをしてお互いのコンピュータが見えることは確認していますし、エクスプローラのアドレスに"\\192.168.0.11\"とじか打ちすることによって相手のコンピュータのファイルにもアクセスできるので、コネクションには問題ないと思うのですが。ただしアプリケーションでは相手にファイルの情報を送受信するような高等なことをやりたいわけではなく、文字列のようなシンプルなやり取りをやりたいだけなのです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
イーサネット接続でTCP/IPで、文字列の送受信をするには、片方がサーバー、片方がクライアントになるプログラムでなければならないですね。 TeraTermでTCPIPの場合などは、クライアントプログラムとして動いているので、相手がポートを空けて待機しているようなサーバープログラムでないと接続できないと思います。 シリアルイーサネットコンバーターのようなものもありますが、今回のケースは単純にクライアント/サーバープログラムを作るのが一般的です。 winsockは、ほとんどの言語から使えます。 winsock at all http://www.kt.rim.or.jp/~ksk/wskfaq-ja/ winsock with VB http://oshiete1.goo.ne.jp/kotaeru.php3?q=155606 winsock with Delphi http://www.asahi-net.or.jp/~NK2W-ISHR/winsock0.htm
その他の回答 (4)
- koi1234
- ベストアンサー率53% (1866/3459)
VC/VC++ を使われるということですが VCのサンプルプログラムにTCP/IP通信のサンプルがあります 参考にしてみてはどうでしょう ※ VC++ Ver6 では MFC サンプル CHATSRVR(サーバ側) CHATTER(クライアント側) が存在しています
お礼
ありがとうございました。使用させてもらっています。返答が遅れて申し訳ありませんでした。
- INTLINSIDE
- ベストアンサー率42% (383/907)
>具体的(ハードウエアですか?)には何のことでしょうか 「COM接続である必要がある」ような事が質問に書いてあったので 質問の目的がシリアル接続のハードとのイーサネット経由での 通信である可能性も考えて参考までに言ってみたのですが。 シリアルイーサネットコンバーターは、以下のような物です。 http://e-kit.jp/products/xport/assembly.htm http://www.co-nss.co.jp/products/network/lantronix/xportdirect/xportdirect-top.html あるいは パソコン - 仮想COMポート - LAN - 仮想COMポート - パソコン のような中継するプログラムも、そう呼べると思います。 (パソコン間で仮想COMポートを使ってイーサネット経由で通信。ハード的にはLANポート(TCP/IP)が必用) で、オープンソースの com0com という仮想COMポートを作ってくれるソフトウェアが有ります。 参考 http://rltm9940.blogspot.com/2008/06/com0com.html com0comは、2つのポートが仮想的にクロスケーブルで接続されたように振舞います。 なので、実際、仮想COMポートをcom0comで作って、teratermでCOMポート経由で 2つのパソコン間で、文字列を送受信するという場合、以下のようなアプリケーション を作ればよいという事になると思います。 それぞれのパソコンで com0comで COM20とCOM21を作って仮想的に繋ぐ。 パソコンAのアプリケーション ・TCP/IPサーバーとしてTCP/IPポートを開いて待機し、クライアントが接続してきたら接続を維持する。 ・COM20を開いて、読み書きするループとかスレッドとかを作る。 ・COM20の内容を随時TCP/IPで送受信(クライアントに転送)する。 パソコンAのTeraTerm ・COM21を開いて、文字列などを送受信する パソコンBのアプリケーション ・TCP/IPクライアントとしてパソコンAに接続する。 ・COM20を開いて、読み書きするループとかスレッドとかを作る。 ・COM20の内容を随時TCP/IPで送受信(サーバーに転送)する。 パソコンBのTeraTerm ・COM21を開いて、文字列などを送受信する そんな感じです。 (アプリケーションは2個作る必要は無いと思います。 文字列を送受信するだけなら、サーバーとクライアントの違いしかないので 同一アプリケーションで、サーバーモードとクライアントモードの両方を 選択できるような作りにしておけば、二度手間には成らないと思います)
お礼
ご丁寧にご回答ありがとうございました。勉強になりました。返答が遅れ申し訳ありませんでした。
- necomimi
- ベストアンサー率41% (633/1540)
言語は何で作るのでしょう? それが決まれば、それの開発ツール&ライブラリに通信用の WINAPI、もしくはコンポーネントがあるはずです。
補足
ありがとうございます。 言語は一番司令塔に位置するところのコンピューターでVC/VC++、または末端のノードでインターネットコントローラー(RTL8019AS)を制御するマイクロコントローラを使用するつもりです。結局は個別の開発環境での制御方法に依存するのでしょうね・・・
- Hoyat
- ベストアンサー率52% (4897/9300)
WindowsでTelnetを使う方法。 http://www.atmarkit.co.jp/fwin2k/win2ktips/216telnetsrv/telnetsrv.html 追記Bと追記Cは矛盾してますね。 「相手にファイルの情報を送受信する」事ができなきゃ「コンピュータAがコンピュータBからTCP/IPで数値を受け取り、コンピュータA内で計算をしてその結果をコンピュータBに送り返すようなアプリケーション」なんて出来ません。 計算結果だって立派なデータファイル情報です。
補足
おかげさまでコンピュータAをTELNETのサーバーにセッティングして、Bからログインすることが成功できました。非常に参考になりました。 私は私のアプリケーションでTCP/IPでも(プロトコルのハードウエアのレイヤーにあるような)シリアル通信のようなパケット通信ができるのだろうなと思っていたのですが、データが通信されたという観点ではファイルシステムの「ファイル」も私のアプリケーション内の「計算結果」も変わらないというご指摘なのですね。ありがとうございます。
補足
ありがとうございます。理解は非常に深まりました。 話が枝分かれになってしまいますが、 「シリアルイーサネットコンバーター」 とは具体的(ハードウエアですか?)には何のことでしょうか?