web-dev-qa-db-ja.com

C ++を使用したネットワーキング

私はC++を初めて使用しますが、その構文と使いやすさの一般的なアイデアを持っています。ただし、C++プログラミングを介してネットワーク経由で通信する方法を学びたいのですが、C++のチュートリアルは特に見つかりません。 C++を使用したネットワーキングについて、または何から始めるべきかを知るための良いリソースを知っている人はいますか?

27
TopGunCoder

C++の新しさを考えると、使用する適切なライブラリが見つからない場合を除き、ソケットAPIを直接構築することはお勧めしません。 Boost.Asio は、大きなスタートを切り、ネットワークプログラミングで使用される高レベルの抽象化にさらされます。

ソケットベースのシステムの構築を開始して「ある種の」何かを取得し、実際のタイミングと負荷条件でのみ発生するコーナーケースのデバッグに数週間費やすのは簡単です。 boost::asioを正しく使用することは、生のソケット処理の複雑さから開発者を保護する場合でも、簡単なことではありません。

目的がrawソケット(またはRPCなどの他のトランスポートメカニズム)を正しく使用する方法を学習することである場合、オンラインサンプルおよびドキュメントを使用して独自のロールを作成し、個々のBSDまたはWinsock APIを理解する-目的が解決する場合ビジネスおよびネットワークインフラストラクチャ側の両方で高品質のコードを使用して、できるだけ迅速にビジネス上の問題を解決し、適切なネットワークライブラリを使用します。この場合、あなたの質問は学習したい願望を示しているので、ライブラリを使用することはあなたの述べた目標を達成するための最良の方法ではないかもしれません。

27
Steve Townsend

以下に関するガイドをご覧ください。

Boost.Asio Look here Boost.Asioに関連するドキュメントに関する質問

10
user225312

Cのやり方を軽deするC++の人々の多くがこれを嫌うと確信していますが、古典的なアプローチは Berkeley socket APIs (それらの起源があるため、いわゆるBSDで)。 Windowsをターゲットにしている場合、「ソース互換性が高く、Unixに触発された」APIは Winsock と呼ばれます。 socket tutorial のWeb検索を行うとしたら、おそらく役に立つ情報が得られるでしょう。少し注意して、おそらく#ifdefまたは2つ、これら2つのインターフェイスの共通点を使用して、Linux、BSD、Mac(BSDソケットを提供)およびWindows(Winsockを使用)で動作するコードを作成するのはそれほど難しくありません。

C++を好む人、Cスタイルが少ない人、またはOS APIに対してコーディングを好まない人のために、これらの同じ概念のラッパーと抽象化を提供するC++ライブラリがあると確信しています。 Boostはかなり人気があるように見えるので、私は 彼らが持っているものを見る と言います。

6
asveikau

C++の標準ライブラリはこれをサポートしていないため、システムAPIまたは何らかの抽象化ライブラリを使用する必要があります。 QT。

2
fschmitt
1
bmeric

C++はオブジェクト指向言語であり、他の言語、特にCから借りることができるように開かれていますが、役立つ可能性のある本がいくつかあります。 http://wjyl.nuaa.edu.cn/kfyy/article/C++%20Network%20Programming%20Volume%201.pdf そしておそらく http://www.cs.wustl。 edu /〜schmidt/PDF/ACE-tutorial.pdf 多数あります。他の人もいます.

1
Olupot Douglas

おそらく Boost.Asio または this one(Unicomm) それに基づいて適切です

0
4xy