socket(2) FreeBSD 一般コマンドマニュアル

socket

前のページ 上に戻る 次のページ

socket




書式

     #include <sys/types.h>
     #include <sys/socket.h>

     int
     socket(int domain, int type, int protocol);


解説

     socket() は、通信のエンドポイントを作成し、記述子を戻します。

     domain パラメータでは、通信を行なう通信ドメインを指定します。これにより、
     使用するプロトコルファミリが選択されます。このプロトコルファミリは、イン
     クルードファイル <sys/socket.h> で定義されています。現在解釈されるフォー
     マットは以下のとおりです。

           PF_LOCAL        PF_UNIX と呼ばれていた、ホスト内プロトコル
           PF_UNIX         ホスト内プロトコル、使用は奨励されない。
                           PF_LOCAL を使用のこと
           PF_INET         IPv4 プロトコル
           PF_IMPLINK      ARPAnet IMP アドレス
           PF_PUP          BSP のような PUP プロトコル
           PF_CHAOS        MIT CHAOS プロトコル
           PF_NS           XNS (Xerox Network Systems) プロトコル
           PF_ISO          ISO プロトコル
           PF_OSI          開放型システム間相互接続プロトコル
                           (Open System Interconnection)
           PF_ECMA         ヨーロッパ電子計算機工業会
                           (European Computer Manufacturers)
           PF_DATAKIT      データキット (Datakit) プロトコル
           PF_CCITT        X.25 に似た ITU-T プロトコル
           PF_SNA          IBM SNA
           PF_DECnet       DECnet
           PF_DLI          DEC Direct / DLI (Data Link Interface) プロトコル
           PF_LAT          LAT プロトコル
           PF_HYLINK       NSC ハイパーチャネル
           PF_APPLETALK    AppleTalk プロトコル
           PF_ROUTE        内部ルーティングプロトコル
           PF_LINK         リンク層インタフェース
           PF_XTP          XTP プロトコル (Xpress Transfer Protocol)
           PF_COIP         コネクションオリエンテッド IP, 別名 ST II
           PF_CNT          Computer Network Technology 社のプロトコル
           PF_SIP          SIP プロトコル (Simple Internet Protocol)
           PF_IPX          Novell 社 IPX (Intenet Packet eXchange) プロトコル
           PF_RTIP         RTIP パケットの識別に使用
           PF_PIP          PIP パケットの識別に使用
           PF_ISDN         統合デジタル通信サービス網 (ISDN)
           PF_KEY          内部鍵管理機能
           PF_INET6        IPv6 プロトコル
           PF_NATM         ATM にネイティブアクセス
           PF_ATM          ATM
           PF_NETGRAPH     Netgraph ソケット

     す。 SOCK_SEQPACKET ソケットは、連続した、信頼性のある、双方向接続ベース
     の最大長が固定のデータグラムの転送を提供します。各読取りシステムコールで
     パケット全体を読み取る必要があるかもしれません。この機能はプロトコル固有
     のもので、現在のところ PF_NS でしか実装されていません。 SOCK_RAW ソケット
     では、内部ネットワークプロトコルとインタフェースにアクセスできます。スー
     パユーザしか使用できない SOCK_RAW タイプ、および計画されているがまだ実装
     されていない SOCK_RDM については、ここでは説明しません。

     protocol では、ソケットで使用する特定プロトコルを指定します。通常の場合
     は、 1 つのプロトコルのみが存在して、指定したプロトコルファミリの特定ソ
     ケットタイプをサポートします。しかし、複数のプロトコルが存在することも可
     能です。この場合は、特定プロトコルをこの方法で指定する必要があります。使
     用するプロトコル番号は、通信を行う ``通信ドメイン'' に固有です。
     protocols(5) を参照してください。

     タイプ SOCK_STREAM のソケットは、パイプに類似した全二重バイトストリームで
     す。ストリームソケットでは、 接続済み状態にしてからデータを送受信する必要
     があります。別のソケットへの接続は、 connect(2) を呼び出して作成できま
     す。接続されたら、 read(2)write(2) を呼び出すか、 send(2)recv(2)
     の変種を呼び出してデータを転送できます。(インターネットファミリなど、一部
     のプロトコルファミリでは、 ``暗黙接続'' という観念がサポートされていま
     す。この接続では、 sendto(2) を呼び出し、接続オペレーションに乗せてデータ
     を送信できます。) セッションが終了したら、 close(2) を実行しても構いませ
     ん。帯域外データは、 send(2) で説明されているように送信し、 recv(2) で説
     明されているように受信できます。

     SOCK_STREAM の実装に使用する通信プロトコルでは、データの喪失や重複がない
     ことが保証されます。ピアプロトコルにバッファ空間があるデータの一部を合理
     的な時間内に問題なく転送できない場合は、接続が破損したとみなされて呼び出
     しがエラーとなり、 -1 が戻されてグローバル変数 errno に ETIMEDOUT が設定
     されます。その他の動作がない場合、プロトコルは約 1 分ごとに転送を強制し、
     ソケットの ``接続'' を任意に維持します。一定期間 (例えば 5 分間) アイドル
     接続で応答がない場合はエラーとなります。破損したストリームでプロセスが送
     信すると、 SIGPIPE シグナルが発生します。この場合、シグナルを処理しないプ
     ロセスは終了します。

     SOCK_SEQPACKET ソケットは、 SOCK_STREAM ソケットとほぼ同じシステムコール
     です。 read(2) を呼び出しても、要求された量のデータしか戻されず、受信パ
     ケットの残りの部分は放棄される点のみが異なります。

     SOCK_DGRAM ソケットと SOCK_RAW ソケットでは、 send(2) の呼び出しで指定さ
     れた通信相手にデータグラムを送信できます。一般的にデータグラムは、次のデ
     ータグラムのアドレスを戻す recvfrom(2) で受信されます。

     fcntl(2) を呼び出すと、帯域外データを受信した場合の SIGURG シグナルを受信
     するプロセスグループを指定できます。非ブロッキング入出力、および入出力イ
     ベントの非同期通知も、 SIGIO で有効にできます。

     ソケットのオペレーションは、ソケットレベルの オプションで制御されます。こ
     のオプションは、ファイル <sys/socket.h> に定義されています。
     setsockopt(2) はオプションの設定に、 getsockopt(2) はオプションの入手に使
     用します。

     [EACCES]           指定されたタイプやプロトコルのソケットを作成する権限が
                        拒否されました。

     [ENOBUFS]          バッファ空間が不足しています。充分なリソースが解放され
                        るまでソケットを作成できません。


関連項目

     accept(2), bind(2), connect(2), getpeername(2), getsockname(2),
     getsockopt(2), ioctl(2), listen(2), read(2), recv(2), select(2), send(2),
     shutdown(2), socketpair(2), write(2), getprotoent(3), netgraph(4),
     protocols(5)

     "An Introductory 4.3 BSD Interprocess Communication Tutorial", PS1, 7.

     "BSD Interprocess Communication Tutorial", PS1, 8.


歴史

     socket() 関数呼び出しは 4.2BSD で登場しました。

FreeBSD 4.4                    November 24, 1997                   FreeBSD 4.4

ABELNET VPSサービス