meh / elixir-socket

Socket wrapping for Elixir.
691 stars 119 forks source link

How can I specify the raw option IP_FREEBIND when connecting to a socket? #83

Open building39 opened 7 years ago

building39 commented 7 years ago

I tried `Socket.TCP.connect("localhost", 80, {:raw, 6, 15, :true}) and received:

** (FunctionClauseError) no function clause matching in Access.get/3

The following arguments were given to Access.get/3:

    # 1
    {:raw, 6, 15, true}

    # 2
    :timeout

    # 3
    nil

Attempted function clauses (showing 5 out of 5):

    def get(%{__struct__: struct} = container, key, default)
    def get(map, key, default) when is_map(map)
    def get(list, key, default) when is_list(list) and is_atom(key)
    def get(list, key, _default) when is_list(list)
    def get(nil, _key, default)

(elixir) lib/access.ex:302: Access.get/3
(socket) lib/socket/tcp.ex:105: Socket.TCP.connect/3
meh commented 7 years ago

What would the code look like with gen_tcp?

building39 commented 7 years ago

{:ok, s} = :gen_tcp.connect('localhost', 80, [{:raw, 0, 15, <<1>>}, {:ip, {10, 138, 69, 63}}])