晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 sh-3ll

HOME


sh-3ll 1.0
DIR:/opt/alt/ruby18/share/ri/1.8/system/Socket/
Upload File :
Current File : //opt/alt/ruby18/share/ri/1.8/system/Socket/bind-i.yaml
--- !ruby/object:RI::MethodDescription 
aliases: []

block_params: 
comment: 
- !ruby/struct:SM::Flow::P 
  body: Binds to the given <tt>struct</tt> sockaddr.
- !ruby/struct:SM::Flow::H 
  level: 3
  text: Parameter
- !ruby/object:SM::Flow::LIST 
  contents: 
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: <tt>server_sockaddr</tt> - the <tt>struct</tt> sockaddr contained in a string
  type: :BULLET
- !ruby/struct:SM::Flow::H 
  level: 3
  text: Example
- !ruby/struct:SM::Flow::VERB 
  body: "     require 'socket'\n     include Socket::Constants\n     socket = Socket.new( AF_INET, SOCK_STREAM, 0 )\n     sockaddr = Socket.pack_sockaddr_in( 2200, 'localhost' )\n     socket.bind( sockaddr )\n"
- !ruby/struct:SM::Flow::H 
  level: 3
  text: Unix-based Exceptions
- !ruby/struct:SM::Flow::P 
  body: "On unix-based based systems the following system exceptions may be raised if the call to <em>bind</em> fails:"
- !ruby/object:SM::Flow::LIST 
  contents: 
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EACCES - the specified <em>sockaddr</em> is protected and the current user does not have permission to bind to it
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EADDRINUSE - the specified <em>sockaddr</em> is already in use
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EADDRNOTAVAIL - the specified <em>sockaddr</em> is not available from the local machine
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EAFNOSUPPORT - the specified <em>sockaddr</em> isnot a valid address for the family of the calling <tt>socket</tt>
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EBADF - the <em>sockaddr</em> specified is not a valid file descriptor
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EFAULT - the <em>sockaddr</em> argument cannot be accessed
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EINVAL - the <tt>socket</tt> is already bound to an address, and the protocol does not support binding to the new <em>sockaddr</em> or the <tt>socket</tt> has been shut down.
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EINVAL - the address length is not a valid length for the address family
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::ENAMETOOLONG - the pathname resolved had a length which exceeded PATH_MAX
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::ENOBUFS - no buffer space is available
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::ENOSR - there were insufficient STREAMS resources available to complete the operation
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::ENOTSOCK - the <tt>socket</tt> does not refer to a socket
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EOPNOTSUPP - the socket type of the <tt>socket</tt> does not support binding to an address
  type: :BULLET
- !ruby/struct:SM::Flow::P 
  body: "On unix-based based systems if the address family of the calling <tt>socket</tt> is Socket::AF_UNIX the follow exceptions may be raised if the call to <em>bind</em> fails:"
- !ruby/object:SM::Flow::LIST 
  contents: 
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EACCES - search permission is denied for a component of the prefix path or write access to the <tt>socket</tt> is denided
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EDESTADDRREQ - the <em>sockaddr</em> argument is a null pointer
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EISDIR - same as Errno::EDESTADDRREQ
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EIO - an i/o error occurred
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::ELOOP - too many symbolic links were encountered in translating the pathname in <em>sockaddr</em>
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::ENAMETOOLLONG - a component of a pathname exceeded NAME_MAX characters, or an entired pathname exceeded PATH_MAX characters
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::ENOENT - a component of the pathname does not name an existing file or the pathname is an empty string
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::ENOTDIR - a component of the path prefix of the pathname in <em>sockaddr</em> is not a directory
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EROFS - the name would reside on a read only filesystem
  type: :BULLET
- !ruby/struct:SM::Flow::H 
  level: 3
  text: Windows Exceptions
- !ruby/struct:SM::Flow::P 
  body: "On Windows systems the following system exceptions may be raised if the call to <em>bind</em> fails:"
- !ruby/object:SM::Flow::LIST 
  contents: 
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::ENETDOWN-- the network is down
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EACCES - the attempt to connect the datagram socket to the broadcast address failed
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EADDRINUSE - the socket's local address is already in use
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EADDRNOTAVAIL - the specified address is not a valid address for this computer
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EFAULT - the socket's internal address or address length parameter is too small or is not a valid part of the user space addressed
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::EINVAL - the <tt>socket</tt> is already bound to an address
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::ENOBUFS - no buffer space is available
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: Errno::ENOTSOCK - the <tt>socket</tt> argument does not refer to a socket
  type: :BULLET
- !ruby/struct:SM::Flow::H 
  level: 3
  text: See
- !ruby/object:SM::Flow::LIST 
  contents: 
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: bind manual pages on unix-based systems
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: bind function in Microsoft's Winsock functions reference
  type: :BULLET
full_name: Socket#bind
is_singleton: false
name: bind
params: |
  socket.bind(server_sockaddr) => 0

visibility: public