Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > socketライブラリ

library socket

要約

socket はプロセス外部との通信 (プロセス間通信、ホスト間通信) を実現します。

ソケットアドレス

ソケットというのは通信路の末端です。 たとえば 1対1 の通信では、まず通信路の両端にひとつずつソケットをつくり、 それらのソケットを接続することによって通信路が確立し、相互に通信できるようになります。 この接続時に、一方のソケットにもう一方のソケットの場所を教えてやる必要がありますが、 この場所を指定するものがソケットアドレスです。

ソケットアドレスはソケットの種類によって中身が異なります。 たとえば TCP では IP アドレスとポート番号ですし、 Unix ドメインソケットではソケットファイルを指すパス名です。

IPSocket および UNIXSocket 以下のクラス階層では、 わざわざソケットアドレスという形式にまとめなくてもよいよう、 ソケットアドレスの中身を直接扱えるメソッドが用意されています。

また、IPSocket 以下での IP アドレスとポート番号の指定は、 数値で表現するだけでなく、ホスト名やサービス名が使えます。 これについては以下の「ホスト指定形式」と「サービス指定形式」を参照してください。

また、C のレベルの「ソケットアドレス構造体を pack した文字列」も使用できます。 これは主に低レベルソケットインターフェース (Socket) で用いられます。

ホスト指定形式

AF_INET なソケットにおいてホストを指定するには以下のいずれか の形式を指定します。

サービス指定形式

サービスを指定するには以下のいずれかの形式を指定します。

ソケットアドレス構造体を pack した文字列

ソケットアドレス構造体とは、C 言語の構造体 struct sockaddr_in (IPv4) や struct sockaddr_un (Unix ドメイン)を指します。 Socket クラスなどソケットの低レベルインタフェースで利用されます。

Socket.pack_sockaddr_in, Socket.unpack_sockaddr_in といったメソッドにより、 例えば、以下のようにしてこの文字列を得ることが出来ます

require 'socket'
p Socket.pack_sockaddr_in("echo", "127.0.0.1")
=> "\002\000\000\a\177\000\000\001\000\000\000\000\000\000\000\000"

ホスト名と IP アドレスの変換

ホスト名から IP アドレスへの変換 (正引き) を行うメソッドは以下のものが用意されています。

逆に IP アドレスからホスト名への変換 (逆引き) を行うメソッドは以下のものが用意されています。

また、resolv ライブラリも使用できます。

クラス

class BasicSocket

ソケットを表す抽象クラスです。具体的なソケット操作はサブクラスで 定義されます。

  class IPSocket

インターネットドメインソケットの抽象クラス。

   class TCPSocket

インターネットドメインのストリーム型ソケットのクラスです。

    class SOCKSSocket

TCPSocket を SOCKS(http://www.sw.nec.co.jp/middle/socks/) 対応したクラスです。

    class TCPServer

TCP/IP ストリーム型接続のサーバ側のソケットのクラスです。

   class UDPSocket

UDP/IPデータグラム型ソケットのクラス。

  class Socket

ソケットそのものに対するシステムコールレベルのアクセスを提供 するクラス。

  class UNIXSocket

UNIX ドメインのストリーム型ソケットのクラス。

   class UNIXServer

UNIXストリーム型接続のサーバ側のソケットのクラス。

モジュール

module Socket::Constants

ソケット操作の指定のための定数を定義したモジュール。このモジュー ルをインクルードすれば、定数 (AF_INETなど) を直接参照できます。

例外クラス

class SocketError

socket ライブラリに関する例外クラスです。

library socket