2017-04-21 12 views
3

私は状況を説明すればもっと良いと思うので、これはあまりにも秘密に思われません。私は、私の生徒のうちのいくつかが働きたいと思うプロジェクトのためのいくつかのスターターコードをリリースしたいと思います。このプロジェクトでは、いくつかのインターネットWebページをスクラップするので、入力URLのHTMLをダウンロードして文字列として返すURLStreamクラスを提供したいと考えています。クロスプラットフォームC++ネットワーキング(大きなライブラリなし)

問題は、クロスプラットフォーム(学生にはMac/Windows/Linuxマシンがあります)の方法でネットワーキングに対処する特に良い方法を見つけることができないということです。私はBoost asioやlibCurlのようなライブラリを知っていますが、これらを使うことの問題は、私が全学生がそれらをダウンロードすることを強制することができないということです。だから私の質問は二重です:

  1. これらのクロスプラットフォームのネットワークコードを提供する良い方法はありますか?
  2. ライブラリーがこれを行う唯一の方法であれば、ライブラリーをスタータープロジェクトに添付して、学生がそれをダウンロードする必要はありませんか?私はこれが愚かな質問かもしれないことを知っていますが、これが可能かどうかを知ることができません。
+0

libasio-devのlibasio-docのインストール課題の目標は何ですか?学生が低レベルのネットワークプログラミングを学ぶためには? HTTPを学ぶ?または、他の何か?生徒が低レベルのネットワークプログラミングを学ぶことが目的でない限り、サードパーティのライブラリ(libcurlなど)を使用することを強くお勧めします。それはあなたとあなたの学生の両方にとってはるかに簡単になります。そして、それはあなたからのメンテナンスがずっと少なくなり、あなたのためのサポートと問題がはるかに少なくなります。 –

+0

@Someprogrammerdude練習の目標はネットワーキングとは関係ありません。彼らはたいていhtmlでうんざりしています。私は、ネットワーキングについて心配することなく、課題に集中できるようにしたいだけです。私はサードパーティのライブラリを使用することに寛容ではありませんが、libsをダウンロードしてセットアップするように伝える必要があります(これは私が避けようとしていたものです)。 libcurlをスタータープロジェクトに添付してダウンロードする必要はありませんか? – gowrath

+0

生徒がアクセスできるシステム(Windowsシステム、macOSシステム、Linuxシステム)のほとんどにアクセスできる場合は、常に静的なライブラリを事前ビルドすることができます。 libcurlを使用してスターターコードを配布し、ビルド時にライブラリーを使用する方法を簡単に説明します。 –

答えて

1

Berkeley sockets APIは、最も一般的な低レベルソケットAPIです。すべてのPOSIXプラットフォームでサポートされているため、LinuxとmacOSの両方で使用できます。

Windowsでもそれはありますが、ソケットはPOSIXシステムのようにディスクリプタではないので、少し歪んでいます。

ソケットを直接使用するとボイラープレートのコードが増えますが、単純なGET要求をサポートする単純なHTTPクライアントを作成するためには、これを使用することは間違いありません。

ソケットの使用に関する多くのチュートリアルとリファレンスがあります。 Beej's Guide to Network Programmingは人気のあるチュートリアルのようですが、Windowsに必要な調整についてのメモが必要です。

1

Boost.Asioは、巨大なBoostと少なくともヘッダー以外のライブラリを構築しているので、あなたのニーズには本当に適していません。 Boostなしで使用できるAsio libと見なすことができ、ヘッダーのみのlibであるため、あなたと学生にとってはずっと面倒です。これはおそらく最も普及した最新のネットワーキングC++ライブラリなので、この演習は学生に便利な体験を提供します。 Asioの例にはa simple HTTP clientもあります。

補足として、この割り当てのためにC++にバインドされていますか?それは、箱からすぐにネットワーキングを提供するPythonまたは同様の言語でははるかに簡単です。

+0

はい、私はそうです。それはC++を学ぶクラスです! :) – gowrath

+0

この課題のトピックはなんですか? *彼らはたいていhtmlを使いこなしている。 –

+0

彼らはページランクタイプのプログラムを書いているので、任意のリンクをたどることができる必要があります。 – gowrath

0

クロスプラットフォームのC++ライブラリネットワークプログラミングのための

ASIOは、近代的なC++ アプローチを使用して一貫性の非同期I/Oモデルと 開発者に提供し、ネットワークプログラミングのためのクロスプラットフォームなC++ライブラリです。最近Boostに受け入れられました。

これをシナプスの情報ウィンドウからコピーしました。 Linuxを使用している場合は、ライブラリー(およびそのマニュアル)をインストールするように:

須藤はapt-getは

関連する問題