ソケット()関数の使い方の詳細:ソケットを作成

それはWindowsまたはであるかどうか  のLinux、使用  ソケットソケットを作成するには()関数を。2つのプラットフォームでのソケット()のパラメータは、戻り値ことを除いて、同じです。

で、「どのようなソケットである私たちがソケットの治療でWindowsとLinuxの違いについて話しました1」。

すべては、Linuxのファイルで、各ファイルは、ファイルディスクリプタ整数型があり、ソケットファイルで、ファイルディスクリプタがあります。後でソケットを作成するソケット()関数を使用して、戻り値はint型のファイルディスクリプタです。

Windowsはソケット接続がネットワークとして扱われるソケットと、通常のファイル、区別する、()後、ソケットを呼び出し、戻り値はソケットを表すソケットタイプです。

Linuxでのソケット()関数

ソケットを作成するために、Linuxのソケット()関数で、<sys / socket.h>ヘッダ・ファイルを使用して、プロトタイプ:

INTソケット(INT AF、int型、int型のプロトコル)。

1)AFアドレスファミリ(アドレスファミリ)、それは、IPアドレスの種類、一般的に使用されるAF_INETとAF_INET6です。AFは、「アドレスファミリ」速記で、INETは「Inetnet」速記です。FF12:48AA:AF_INET6 IPv6アドレス、例えば1030のような:: C9B4; AF_INETアドレスは、IPv4、例えば127.0.0.1を示し 1A2B。

私たちは覚えておく必要がある127.0.0.1、それは特別なIPアドレス、ローカルアドレス表現であり、私たちは頻繁にチュートリアルの後半で使用されること。

あなたはまた、接頭辞PFを使用することができ、PFは、「プロトコルファミリ」であることのために短く、AFは同じです。AF_INET、AF_INET6にPF_INET6相当する。例えば、PF_INETは同等。

データ送信/ソケットタイプの2)タイプ、一般的に使用されるSOCK_STREAM(ストリーム形式ソケット/ソケット接続指向)とSOCK_DGRAM(データグラムソケット/ソケット接続なし)、我々は「で、どのようなタイプのソケット部分が導入されました」。

3)プロトコル、それぞれ一般的に使用されるIPPROTO_TCPとIPPTOTO_UDP、TCPトランスポート・プロトコルとUDPトランスポートプロトコル、伝送プロトコルを表します。

アドレスおよびデータ伝送のタイプでは、それを使用するプロトコルを決定するのに十分ではありませんか?なぜ私たちは第三引数それが必要なのでしょうか?

あなたが考える、そして通常の状況下で、2つのパラメータはソケットを作成することができ、AFタイプを持っているように、このような事態が発生しない限り、オペレーティングシステムは自動的に、プロトコルタイプを推測します:二つの異なるプロトコルがあり、同じアドレスをサポートタイプおよびデータ転送タイプ。私たちが使用するプロトコルを指定しない場合は、オペレーティングシステムがない方法自動控除ではありません。

このチュートリアルでは、IPv4アドレス、パラメータのAF PF_INETの値を使用しています。あなただけのプロトコルTCPこれら二つの条件を満たすように、SOCK_STREAMの送信データを使用している場合は、そのためには、ソケット()関数を呼び出すことができます:

あなたは=ソケット(AF_INET、SOCK_STREAM、IPPROTO_TCP)tcp_socket // IPPROTO_TCP表示TCP协议

このソケットはTCPソケットと呼ばれています。

あなたがSOCK_DGRAM伝送を使用している場合、ソケット()関数を呼び出すことが可能であるので、その後、唯一のプロトコルのUDPこの二つの条件を満たしています。

INT udp_socket =ソケット(AF_INET、SOCK_DGRAM、IPPROTO_UDP)。// IPPROTO_UDP表示UDP协议

このソケットはUDPソケットと呼ばれています。

上記の両方の場合において、条件を満足する唯一のプロトコルは、プロトコルの値を0に設定することができ、自動的に次のように、使用すべきかプロトコル推測するシステム。

int型tcp_socket =ソケット(AF_INET、SOCK_STREAM 、0); // 作成TCPソケット
int型udp_socket =ソケット(AF_INET、SOCK_DGRAM 、0); //は、 UDPソケットを作成します

このチュートリアルの後半では、この単純化された文言を採用します。

Windowsでソケットを作成します。

Windows環境下でも、ソケットを作成するソケット()関数を使用して、プロトタイプは次のとおりです。

SOCKETソケット(INTのAF、int型、int型のプロトコル)。

戻り値の異なるタイプに加えて、他の人は同じです。Windowsソケット通常のファイルとして扱わないが、ハンドルのソケットタイプを返します。次の例を考えてみます。

SOCKET靴下=ソケット(AF_INET、SOCK_STREAM、0); // TCPソケットを作成します

おすすめ

転載: blog.csdn.net/Qsir/article/details/93739021