2011-12-30 3 views
3

WindowsとLinux用のクロスプラットフォームプログラムを作成しています:: Javaプログラムはtcp/ipそれはいくつかのデータを取得したときにそのTCP/IPポートから継続的にリッスンするC/C++プログラムがあり、結果データを別のtcp/ipポートに送信して、そこからJavaプログラムがデータといくつかのアクションを行います。 私はC/C++の部分がさらに心配です。詳細や有用なリンクやサンプルコードをお手伝いできますか?WindowsとLinuxの両方でC、C++のtcp/ipポートからデータを取得してデータを取得する方法

+0

"TCP/IP経由で通信するプログラムを作成したい"というのは、役に立つ質問にはなりません。具体的に何が問題になっていますか?何を試しましたか? – cHao

+0

私はC、C++のtcp/ip portにデータを読み込み、データを送信したいのですが、どうすればいいのですか? – Ronin

+0

ヒント:あなたが望むのは、一般的に「ソケット」と呼ばれるものに関係しています。 – cHao

答えて

0

ネットワーキングAPI /ライブラリとイベント通知メカニズムが数多くあります。私はあなたがC++の初心者であり、あなたの実装からマイクロ秒を絞ったり、さまざまなプラットフォーム用に異なるコードを書いたりするためにプラットフォーム固有の機能に対処したいとは思っていないので、あなたの最善の策はBoost ASIO - aネットワークと低レベルのI/OプログラミングのためのクロスプラットフォームのC++ライブラリです。それは非常に良い文書、数多くの例を持ち、一般的に使用するのはかなり簡単です。アプリケーション内でコードの1行を変更する必要がない多くのプラットフォームで動作します。それには落とし穴がありますが、パフォーマンス、メモリ使用量、待ち時間、スループット、または上記のすべてを厳密に厳しく要求する非常に複雑な作業をしない限り、それほど重要ではありません。

私の前提に正しくない場合に備えて、多くの選択肢があります。それらのいくつかは以下のとおりです。

  • libevent - 特定のイベントがファイルディスクリプタ上またはタイムアウト後に発生したときにコールバック関数を実行するためのメカニズムは
  • epollに達している - のためのスケーラブルなI/Oイベント通知メカニズムをLinuxの
  • kqueue - スケーラブルなイベント通知ものNetBSD、OpenBSDのではサポートはFreeBSD 4.1で導入され1インターフェース、DragonflyBSD、およびMac OS Xの
  • POSIX
  • Windows API(それらの人は常にホイールを再発明します)。

幸運!

2

私の提案:クロスプラットフォーム/クロスプラットフォームプロトコルを指定するためのC++クロスプラットフォームネットワーキングの場合はboost::asio、クロスプラットフォーム/クロス言語プロトコルの場合はgoogle protocol buffersです。

boost :: asioを使用してデータとGoogleプロトコルのバッファを送受信し、これらのバイトを有用なもの(ints、stringsなど)に変換します。

関連する問題