それは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ソケットを作成します