2012-04-21 12 views
4

まあ、私はC++ソケットCでの説明とC++

のための標準ソケットヘッダファイルがある場合、私は(Google検索エンジンを使用して)全体のインターネットを検索しましたが、任意の標準的なソケットヘッダーを見つけることができなかった疑問に思ってきましたBoost、chilkatなどのいくつかのライブラリを探すのに加えて、C++用のファイルもあります。

私はC言語用の標準ソケットヘッダーファイルを見つけることに成功しました。 C標準ソケットヘッダーファイルを使用していて、C++コード内にある場合は、私のプログラム はPure C++またはCおよびC++ですか?

標準のC++ソケットヘッダーファイルが見つかりませんでした。 のように、C++の場合は<string>、Cの場合は<string.h>がありますが、C++の標準ヘッダファイルである はありません。

C/C++の賢明な人が、私のためにすべてのことをステップごとに説明してくれることを願っています。

+2

なぜあなたのコードはCコードでなければなりませんあなたはcヘッダを使用し、どの標準のソケットヘッダを使用しているからですか?通常、ソケットはオペレーティングシステムによって異なります。 – alfa

+0

私はなぜそれを説明し理解するのが欲しいのですか – user1341993

+3

CとC++のソースファイルはありません。 C++コンパイラでコンパイルすると、C++ソースファイルとして解釈されます。 Cコンパイラでコンパイルすると、Cソースファイルとして解釈されます。 *細心の注意を払って、異なるコンパイラで作成されたオブジェクトファイルを混在させて、単一の実行ファイルを取得することができます。 – pmg

答えて

7

C++には標準のソケットライブラリはありません。オペレーティングシステムが提供する任意のソケットAPI(通常はC API、Unixオペレーティングシステムの場合はBSD sockets API)を使用するか、クロスプラットフォームであるBoost.ASIOのようなC++ライブラリを使用できます。

+0

私は私の答えを得ていない、私のC + +アプリケーション内のCのための標準的なソケットのヘッダーファイルを使用して、CとC + +になりますか?または単にC++? – user1341993

+5

@ user1341993では、CまたはC++の標準ソケットヘッダーはありません。 – rid

+2

通常、ヘッダーファイルまたはコードは、C++プログラム内で「extern 'C」の中でOKを使用できるようにする構文糖を提供します(http://www.parashift.com/c++-faq-lite/mixing-c)。 -and-cpp.html –

0

cヘッダファイルをインクルードするが、C++を使用してコードをコンパイルすると、C++アプリケーションが生成されます。 Boost :: asio、ACE、WinSockなど、C++フレームワークは数多くあります。これは、コードを移植可能にしたい場合、およびアプリケーションが特定のOS(つまり、特定のOSでのみ実行される場合)に依存するかどうかによって異なります。 Linux、MacまたはWindows。

また、C++はCのスーパーセットであるため、C++プログラムをコンパイルするので、CまたはC++を使用するかどうかは関係ありません。

1

BSD socketsは、70年代にBill Joyが発明したもので、おそらく「標準ソケットAPI」です。

一般的には、以下のヘッダが含まれるだろう:

#include <sys/socket.h> // Core BSD socket functions and data structures. 
#include <netinet/in.h> // AF_INET and AF_INET6 address families and their 
         // corresponding protocol families PF_INET and PF_INET6. 
#include <arpa/inet.h> // Functions for manipulating numeric IP addresses. 
#include <netdb.h>  // Name resolution 

Beej者ガイドは、ソケット(BSDソケット)に優れたチュートリアルですプログラミング:

http://beej.us/guide/bgnet/