BasicSocket
表示套接字的抽象类。具体的套接字操作需要在子类加以定义。比如说internet domain stream socket的话,就要使用TCPSocket。
超类:
IO
类方法:
BasicSocket.do_not_reverse_lookup
BasicSocket.do_not_reverse_lookup = bool
若该值为真,则不会进行从地址到主机名的逆向解析。默认值是false。该设定的影响面非常大。
它会影响下列方法的运作。
BasicSocket#recv, IPSocket#recvfrom, UNIXSocket#recvfrom, Socket#recvfrom, IPSocket#addr, IPSocket#peeraddr, Socket.getaddrinfo
例:
require 'socket'
p TCPSocket.new('localhost', 'telnet').addr
TCPSocket.do_not_reverse_lookup = true
p TCPSocket.new('localhost', 'telnet').addr
=> ["AF_INET", 2253, "localhost", "127.0.0.1"]
["AF_INET", 2254, "127.0.0.1", "127.0.0.1"]
BasicSocket.for_fd(fd) ((<ruby 1.7 feature>))
为文件描述符fd生成一个新套接字。
ruby 1.7 特性: 该方法从 Socket类移动到该类中。这样就可以在任意套接字fd中生成相对应的套接字类了。
方法:
getpeername
获取对方的套接字信息。返回打包sockaddr结构体后得到的字符串。请参考getpeername(2)。
getsockname
获取套接字信息。返回打包sockaddr结构体后得到的字符串。请参考getsockname(2)。
getsockopt(level, optname)
获取套接字选项。请参考getsockopt(2)。将获取的选项数据打包成字符串后,返回该字符串。
recv(len[, flags])
从套接字获取数据,并以字符串形式将其返回。len规定了获取信息的最大长度。关于flags的具体细节,请参考recv(2)。flags的默认值是0。指定flags时使用的常数都被定义在Socket类中。(例: Socket::SO_LINGER)
send(mesg, flags[, to])
通过套接字发送数据。关于flags的具体细节,请参考send(2)。若套接字尚未进行连接时,则必须指定发送目的地to。返回实际发送数据的大小。
to中必须是将套接字地址结构体打包后得到的字符串。
若发送数据失败,则引发Errno::EXXX异常。
setsockopt(level, optname, optval)
设定套接字选项。请参考setsockopt(2)。
shutdown([how])
结束套接字的连接。若how为0,则只停止信息的接收;若为1则只停止信息的发送;若how为2,则停止信息的发送和接受全过程。how的缺省值就是2。请参考shutdown(2)。