Class: SocksHandler::UDPSocket
- Inherits:
-
UDPSocket
- Object
- UDPSocket
- SocksHandler::UDPSocket
- Includes:
- SocksHandler
- Defined in:
- lib/socks_handler/udpsocket.rb
Constant Summary collapse
- MAX_REPLY_SIZE =
262
Constants included from SocksHandler
Instance Method Summary collapse
- #connect(host, port) ⇒ Integer
- #connect_socks_server(host, port) ⇒ Integer
- #recv(maxlen, flags = 0) ⇒ String
- #recvfrom(maxlen, flags = 0) ⇒ Array(String, Array(String, Integer, String, String))
- #recvfrom_nonblock(maxlen, flags = 0) ⇒ Array(String, Array(String, Integer, String, String))
- #recvfrom_socks_server(maxlen, flags = 0) ⇒ Array(String, Array(String, Integer, String, String))
- #recvfrom_socks_server_nonblock(maxlen, flags = 0) ⇒ Array(String, Array(String, Integer, String, String))
- #send(mesg, flags, host = nil, port = nil) ⇒ Integer
Instance Method Details
#connect(host, port) ⇒ Integer
24 25 26 27 28 |
# File 'lib/socks_handler/udpsocket.rb', line 24 def connect(host, port) @host = host @port = port 0 end |
#connect_socks_server(host, port) ⇒ Integer
17 |
# File 'lib/socks_handler/udpsocket.rb', line 17 alias_method :connect_socks_server, :connect |
#recv(maxlen, flags = 0) ⇒ String
34 35 36 37 |
# File 'lib/socks_handler/udpsocket.rb', line 34 def recv(maxlen, flags = 0) resp, _ = recvfrom(maxlen, flags) resp end |
#recvfrom(maxlen, flags = 0) ⇒ Array(String, Array(String, Integer, String, String))
50 51 52 |
# File 'lib/socks_handler/udpsocket.rb', line 50 def recvfrom(maxlen, flags = 0) recvfrom_via(method(:recvfrom_socks_server), maxlen + MAX_REPLY_SIZE, flags) end |
#recvfrom_nonblock(maxlen, flags = 0) ⇒ Array(String, Array(String, Integer, String, String))
64 65 66 |
# File 'lib/socks_handler/udpsocket.rb', line 64 def recvfrom_nonblock( maxlen, flags = 0) recvfrom_via(method(:recvfrom_socks_server_nonblock), maxlen + MAX_REPLY_SIZE, flags) end |
#recvfrom_socks_server(maxlen, flags = 0) ⇒ Array(String, Array(String, Integer, String, String))
44 |
# File 'lib/socks_handler/udpsocket.rb', line 44 alias_method :recvfrom_socks_server, :recvfrom |
#recvfrom_socks_server_nonblock(maxlen, flags = 0) ⇒ Array(String, Array(String, Integer, String, String))
58 |
# File 'lib/socks_handler/udpsocket.rb', line 58 alias_method :recvfrom_socks_server_nonblock, :recvfrom_nonblock |
#send(mesg, flags, host = nil, port = nil) ⇒ Integer
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/socks_handler/udpsocket.rb', line 74 def send(mesg, flags, host = nil, port = nil) if @host && @port && (host || port) raise Errno::EISCONN, "Socket is already connected" end host ||= @host port ||= @port if port.nil? if host.nil? raise Errno::EDESTADDRREQ, "Destination address required" else host, port = (host.is_a?(String) ? Addrinfo.new(host) : host).getnameinfo end end request = [0x00, 0x00, 0x00].pack("C*") # Currently, the fragment number is fixed to 0 request << build_destination_packets(host, port) request << [mesg].pack("a*") super(request, flags) end |