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

class Socket

クラスの継承リスト: Socket < BasicSocket < IO < Enumerable < File::Constants < Object < Kernel

要約

ソケットそのものに対するシステムコールレベルのアクセスを提供 するクラス。Perl のソケットに対するアクセスと同レベルの機能を 提供しています。このクラスではソケットアドレスは Array#pack された文字列で指定します (socket/ソケットアドレス構造体を pack した文字列を参照)。

一般的なソケットプログラミングはより高レベルの TCPSocket クラスや TCPServer クラスを用い て行われることが多く、このクラスはあまり用いられません。

特異メソッド

定義 説明
getaddrinfo(nodename, servname, family=nil, socktype=nil, protocol=nil, flags=nil) -> Array

[RFC2553]で定義された getaddrinfo() の機能を提供するクラスメソッド。この関数は gethostbyname() や getservbyname() の代わりとして用意されており、 IP のバージョンに依存しないプログラムを書くための標準的な API です。

gethostbyaddr(host, type = Socket::AF_INET) -> Array

sockaddr 構造体をパックした文字列からホスト情報を返します。 ホスト情報の構造は Socket.gethostbyname と同じです。 type には、アドレスタイプ(デフォルトは Socket::AF_INET)を指定します。

gethostbyname(host) -> Array

ホスト名または IP アドレス(指定方法に関しては socket/ホスト指定形式を参照) からホストの情報を返します。

gethostname -> String

システムの標準のホスト名を取得します。

getnameinfo(sa, flags = 0) -> Array

[RFC2553] で定義された getnameinfo() の機能を提供するク ラスメソッド。 gethostbyaddr() や getservbyport() の代 わりとして用意されています。IPのバージョンに依存しないプログラムを 書くための標準的なAPIです。

getservbyname(service, proto = "tcp") -> Fixnum

service, protoに対応するポート番号を返 します。protoの省略値は"tcp"です。

open(domain, type, protocol) -> Socket
new(domain, type, protocol) -> Socket

新しいソケットを生成します。domain、type、 protocol はインクルードファイルにある定数で指定しま す。ほとんどの定数は Socket::AF_INET のように Socket クラスの定数として定義されています。domain とtype に関しては、"AF_INET", "SOCK_STREAM" のように文字列でも指定できますが、文 字列ですべての機能を指定できる保証はありません。

sockaddr_in(port, host) -> String
pack_sockaddr_in(port, host) -> String

指定したアドレスをsocket/ソケットアドレス構造体を pack した文字列 で返します。port は、ポート番号を表す Fixnum あるいは、ポート 番号、サービス名を表す文字列です。

sockaddr_un(path) -> String
pack_sockaddr_un(path) -> String

指定したアドレスをsocket/ソケットアドレス構造体を pack した文字列 で返します。

pair(domain, type, protocol)
socketpair(domain, type, protocol)

相互に結合されたソケットのペアを含む2要素の配列を返します。 引数の指定は Socket.open と同じです。

unpack_sockaddr_in(sockaddr)

socket/ソケットアドレス構造体を pack した文字列を unpack したアドレスを返します。返される値は [port, ipaddr] の配列です。

unpack_sockaddr_un(sockaddr)

socket/ソケットアドレス構造体を pack した文字列を unpack したソケットパス名を返します。

インスタンスメソッド

定義 説明
accept

新しい接続を受け付けて、新しい接続に対するソケットとアドレスの ペアを返します。accept(2) を参照。

accept_nonblock

ソケットをノンブロッキングモードに設定した後、 accept(2) を呼び出します。

bind(my_sockaddr)

ソケットを my_sockaddr に結合します。bind(2) と同じ働きをします。my_sockaddr は socket/ソケットアドレス構造体を pack した文字列 です。

connect(server_sockaddr)

connect(2) と同じ働きをします。server_sockaddr は、 socket/ソケットアドレス構造体を pack した文字列 です。

connect_nonblock(server_sockaddr)

ソケットをノンブロッキングモードに設定した後、 connect(2) を呼び出します。

listen(backlog)

listen(2) と同じ働きをします。

recvfrom(maxlen[, flags])

recv と同様にソケットからデータを受け取りますが、 戻り値は文字列と相手ソケットのアドレスのペアです。引数につい ては recv と同様です。

recvfrom_nonblock(maxlen[, flags])

ソケットをノンブロッキングモードに設定した後、 recvfrom(2) を呼び出します。

sysaccept

接続したクライアントのファイル記述子とアドレスのペアを返すことを除 けば Socket#accept と同じです。

定数

定義 説明
AF_APPLETALK
AF_ATM
AF_AX25
AF_CCITT
AF_CHAOS
AF_CNT
AF_COIP
AF_DATAKIT
AF_DEC
AF_DLI
AF_E164
AF_ECMA
AF_HYLINK
AF_IMPLINK
AF_INET
AF_INET6
AF_IPX
AF_ISDN
AF_ISO
AF_LAT
AF_LINK
AF_LOCAL
AF_MAX
AF_NATM
AF_NDRV
AF_NETBIOS
AF_NETGRAPH
AF_NS
AF_OSI
AF_PPP
AF_PUP
AF_ROUTE
AF_SIP
AF_SNA
AF_SYSTEM
AF_UNIX
AF_UNSPEC

アドレスファミリー: Socket.open の第一引数 domain に使用します。

AI_ADDRCONFIG
AI_ALL
AI_CANONNAME
AI_DEFAULT
AI_MASK
AI_NUMERICHOST
AI_PASSIVE
AI_V4MAPPED
AI_V4MAPPED_CFG

フラグ: Socket.getaddrinfo の flags 引数に使用します。 getaddrinfo(3)も参照して下さい。

EAI_ADDRFAMILY
EAI_AGAIN
EAI_BADFLAGS
EAI_BADHINTS
EAI_FAIL
EAI_FAMILY
EAI_MAX
EAI_MEMORY
EAI_NODATA
EAI_NONAME
EAI_PROTOCOL
EAI_SERVICE
EAI_SOCKTYPE
EAI_SYSTEM

Socket.getaddrinfoが失敗したときに返すエラーコードです。 getaddrinfo(3)も参照して下さい。

INADDR_ALLHOSTS_GROUP
INADDR_ANY
INADDR_BROADCAST
INADDR_LOOPBACK
INADDR_MAX_LOCAL_GROUP
INADDR_NONE
INADDR_UNSPEC_GROUP
IPPORT_RESERVED
IPPORT_USERRESERVED
IPPROTO_BIP
IPPROTO_EGP
IPPROTO_EON
IPPROTO_GGP
IPPROTO_HELLO
IPPROTO_ICMP
IPPROTO_IDP
IPPROTO_IGMP
IPPROTO_IP
IPPROTO_MAX
IPPROTO_ND
IPPROTO_PUP
IPPROTO_RAW
IPPROTO_TCP
IPPROTO_TP
IPPROTO_UDP
IPPROTO_XTP

IPプロトコル: BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に 使用します。

IP_ADD_MEMBERSHIP
IP_DEFAULT_MULTICAST_LOOP
IP_DEFAULT_MULTICAST_TTL
IP_DROP_MEMBERSHIP
IP_HDRINCL
IP_MAX_MEMBERSHIPS
IP_MULTICAST_IF
IP_MULTICAST_LOOP
IP_MULTICAST_TTL
IP_OPTIONS
IP_RECVDSTADDR
IP_RECVOPTS
IP_RECVRETOPTS
IP_RETOPTS
IP_TOS
IP_TTL
MSG_COMPAT
MSG_CTRUNC
MSG_DONTROUTE
MSG_DONTWAIT
MSG_EOF
MSG_EOR
MSG_FLUSH
MSG_HAVEMORE
MSG_HOLD
MSG_OOB
MSG_PEEK
MSG_RCVMORE
MSG_SEND
MSG_TRUNC
MSG_WAITALL
NI_DGRAM
NI_MAXHOST
NI_MAXSERV
NI_NAMEREQD
NI_NOFQDN
NI_NUMERICHOST
NI_NUMERICSERV

Socket.getnameinfoの第2引数 flags に与える定数です。 getnameinfo(3)も参照して下さい。

PF_APPLETALK
PF_ATM
PF_AX25
PF_CCITT
PF_CHAOS
PF_CNT
PF_COIP
PF_DATAKIT
PF_DEC
PF_DLI
PF_ECMA
PF_HYLINK
PF_IMPLINK
PF_INET
PF_INET6
PF_IPX
PF_ISDN
PF_ISO
PF_KEY
PF_LAT
PF_LINK
PF_LOCAL
PF_MAX
PF_NATM
PF_NDRV
PF_NETBIOS
PF_NETGRAPH
PF_NS
PF_OSI
PF_PIP
PF_PPP
PF_PUP
PF_ROUTE
PF_RTIP
PF_SIP
PF_SNA
PF_SYSTEM
PF_UNIX
PF_UNSPEC
PF_XTP

プロトコルファミリー: Socket.open の第三引数 protocol に使用します。

SHUT_RD
SHUT_RDWR
SHUT_WR

shutdown の how: BasicSocket#shutdown の how 引数に使用します。

SOCK_DGRAM
SOCK_PACKET
SOCK_RAW
SOCK_RDM
SOCK_SEQPACKET
SOCK_STREAM

ソケットタイプ: Socket.open の第二引数 type に使用します。

SOL_ATALK
SOL_AX25
SOL_IP
SOL_IPX
SOL_SOCKET
SOL_TCP
SOL_UDP
SOPRI_BACKGROUND
SOPRI_INTERACTIVE
SOPRI_NORMAL
SO_ACCEPTCONN
SO_ACCEPTFILTER
SO_ATTACH_FILTER
SO_BINDTODEVICE
SO_BROADCAST
SO_DEBUG
SO_DETACH_FILTER
SO_DONTROUTE
SO_DONTTRUNC
SO_ERROR
SO_KEEPALIVE
SO_LINGER
SO_NKE
SO_NOSIGPIPE
SO_NO_CHECK
SO_NREAD
SO_OOBINLINE
SO_PASSCRED
SO_PEERCRED
SO_PEERNAME
SO_PRIORITY
SO_RCVBUF
SO_RCVLOWAT
SO_RCVTIMEO
SO_REUSEADDR
SO_REUSEPORT
SO_SECURITY_AUTHENTICATION
SO_SECURITY_ENCRYPTION_NETWORK
SO_SECURITY_ENCRYPTION_TRANSPORT
SO_SNDBUF
SO_SNDLOWAT
SO_SNDTIMEO
SO_TIMESTAMP
SO_TYPE
SO_USELOOPBACK
SO_WANTMORE
SO_WANTOOBFLAG
TCP_MAXSEG
TCP_NODELAY

継承したメソッド

getpeername getsockname getsockopt recv recv_nonblock send setsockopt shutdown .do_not_reverse_lookup .for_fd << binmode bytes chars clone close close_read close_write closed? each each_byte eof expect fcntl fileno flush fsync getbyte getc gets ioctl isatty lineno lineno= lines nonblock nonblock= nonblock? pid pos pos= print printf putc puts read read_nonblock readbyte readbytes readchar readline readlines readpartial ready? reopen rewind scanf seek stat sync sync= sysread sysseek syswrite to_io to_ptr ungetc wait write write_nonblock .foreach .pipe .popen .read .readlines .select .sysopen ::SEEK_CUR ::SEEK_END ::SEEK_SET == === =~ __id__ __send__ _dump class dclone display enum_for eql? equal? extend freeze frozen? hash initialize initialize_copy inspect instance_eval instance_exec instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? marshal_dump marshal_load method method_missing methods nil? pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods public_methods remove_instance_variable respond_to? singleton_method_added singleton_method_removed singleton_method_undefined singleton_methods taint tainted? tap to_a to_ary to_hash to_int to_proc to_regexp to_s to_str to_yaml to_yaml_properties to_yaml_style untaint